Hello,

I’m looking for information on the correct way to re-IP an Apache Pulsar 
cluster using ZooKeeper and BookKeeper.

Before performing the re-IP, I wanted to make some configuration changes so 
that the BookieID uses <FQDN>:<port> instead of the default <IP>:<port>. To do 
this, I set `useHostNameAsBookieID=true`. However, after restarting the 
BookKeeper systemd service, the service fails to start and the following error 
appears in the logs:
2025-12-23T10:22:39,564 - ERROR [main:Main@218] - Failed to build bookie server
org.apache.bookkeeper.bookie.BookieException$InvalidCookieException: Cookie [5
bookieHost: “<hostname>.dummy.com:3181"
journalDir: “/data/bookkeeper/journal01"
ledgerDirs: "1\t/data/bookkeeper/ledger01"
instanceId: "9a36eaf5-564e-4b5d-9636-24b082125688"
] is not matching with [5
bookieHost: “10.0.0.1:3181"
journalDir: "/data/bookkeeper/journal01"
ledgerDirs: "1\t/data/bookkeeper/ledger01"
instanceId: "9a36eaf5-564e-4b5d-9636-24b082125688"
]

I tried the following steps to resolve the issue:

  *
Stopping the BookKeeper systemd service

  *
Moving the Cookie/VERSION files from the journal01 and ledger01 directories to 
/tmp
  *
Deleting the old cookie using:
     *
`bin/bookkeeper shell cookie_delete 10.0.0.1:3181`
  *
Running updateBookieInLedger with the old srcBookie and new destBookie
     *
`bin/bookkeeper shell updateBookieInLedger --srcBookie ’10.0.0.1:3181' 
--destBookie ‘<hostname>.dummy.com:3181' --updatespersec 5
  *
Generating a new cookie and coping the created file to the VERSION files for 
the journal01 and ledger01 directories.
     *   `bin/bookkeeper shell cookie_generate -j /data/bookkeeper/journal01 -l 
/data/bookkeeper/ledger01 -o /tmp/test-cookie <hostname>.dummy.com:3181`

​
None of these steps unfortunately seemed to work. The only way I was able to 
recover was by clearing the entire journal and ledger directories and letting 
the node resync from the other bookies.

So my main questions are:

  *   What is the correct/recommended approach to re-IP Bookkeeper nodes while 
preserving existing ledger data?

  *   Are there any additional steps required when changing 
`useHostNameAsBookieID` on an existing cluster like clearing or updating the 
Cookie?

Some additional context about the environment:

  *
Pulsar version: 3.0.5
  *
Bookkeeper version: 4.16.5
  *
Zookeeper version: 3.8.4
  *
openJDK version: 17.0.17
  *
Running on RHEL8 VM's


Thanks in advance!


Met vriendelijke groeten / Meilleures salutations / Best regards

Warre




Reply via email to