Coder Social home page Coder Social logo

Comments (3)

merlimat avatar merlimat commented on July 1, 2024

Yes, this is another area where we need to add more documentation.

We use the BookKeeper rack-aware placement policy. The "rack" concept can be anything, (rack/region/availability zone). The base idea is: when forming the ensemble for a new ledger, pick bookies from different racks, to reduce the chances of data unavailability.

If bookies from different racks are not available, the policy falls back to chose randomly across available bookies.

The ZkBookieRackAffinityMapping is a way to feed the rack information into the rack-aware policy. The JSON z-node content you've attached looks correct. The first level is the group-name, and can be used to provide bookie isolation (strictly picking from a subset of bookies).

You only need to update the /bookies z-node when you add new bookies. There is no need to update it when processes are up or down, that is controlled by the list in /ledgers/available.

If the /bookies z-node is not there, the BK client will choose randomly. Same thing if all bookies are in the same "rack" (whatever that means).

So, in AWS, you'd probably want to create instances in different AZs and update the /bookies z-node to reflect that.

My main question here is, are we doing it right ? 😛

Yes, just make sure you have bookies from different "racks" in the configuration.

And how can we check if it's working?

You should be able to verify that all ledgers should have the ensemble containing bookies from different AZs :

bin/bookkeeper shell ledgermetadata -ledgerid $MY_LEDGER_ID

Should we tell pulsar to use this class ?

It's automatically used when bookkeeperClientRackawarePolicyEnabled=true is set on conf/broker.conf.

from pulsar.

estebangarcia avatar estebangarcia commented on July 1, 2024

@merlimat We're getting lots of this messages:

2017-01-30 19:44:40,500 - WARN - [pulsar-io-39-5:RackawareEnsemblePlacementPolicy@526] - Failed to choose a bookie from /default-rack : excluded [], fallback to choose bookie randomly from the cluster.

Is this normal? It looks like our topolopgy is not being used. Contents of our znode /bookie

{"us-east-1":{"10.64.103.105:3181":{"rack":"us-east-1d","hostname":"ip-10-64-103-105.ec2.internal"},"10.64.102.228:3181":{"rack":"us-east-1c","hostname":"ip-10-64-102-228.ec2.internal"},"10.64.102.146:3181":{"rack":"us-east-1c","hostname":"ip-10-64-102-146.ec2.internal"},"10.64.103.213:3181":{"rack":"us-east-1e","hostname":"ip-10-64-103-213.ec2.internal"},"10.64.102.121:3181":{"rack":"us-east-1a","hostname":"ip-10-64-102-121.ec2.internal"},"10.64.102.43:3181":{"rack":"us-east-1a","hostname":"ip-10-64-102-43.ec2.internal"}}}

from pulsar.

estebangarcia avatar estebangarcia commented on July 1, 2024

Looking at a random ledger metadata, we can see the ensemble members are all from different AZs, but we don't know if it's just a coincidence or if the affinity is really working and that WARN is expected.

from pulsar.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.