Reset Mesh Credentials di Environment Consul Cluster Carbonio

Overview

Pada deployment cluster, mesh password tidak bisa diganti hanya dengan menjalankan ulang setup wizard di semua node. Karena Consul server saling berbagi cluster state dan data autentikasi, prosedur reset password mengharuskan kita menyusutkan cluster sementara menjadi satu leader node, mereset mesh credentials, lalu menyatukan kembali seluruh server dan client node ke cluster.

Prosedur ini berlaku untuk environment dengan beberapa Consul (service-discover) server node dan harus dijalankan hati-hati pada semua node yang terlibat. Selama proses berlangsung, fungsi service discovery akan sementara tidak tersedia sampai cluster selesai dikonfigurasi ulang dan semua node berhasil rejoin ke mesh.

Secara garis besar, prosedur terdiri dari fase berikut:

  1. Identifikasi Consul leader saat ini.
  2. Hapus follower server node dari cluster.
  3. Bangun ulang Consul quorum pada leader node.
  4. Reset ACL bootstrap state.
  5. Inisialisasi ulang mesh dengan password baru.
  6. Rejoin sisa Consul server node.
  7. Rejoin semua client node yang menjalankan agent service-discover.

Sebelum Memulai

Prosedur ini mengubah konfigurasi Consul cluster, mereset mesh credentials, dan menghapus beberapa file konfigurasi serta state dari node yang terdampak. Sebelum lanjut, pastikan environment bisa dipulihkan jika terjadi kegagalan tak terduga.

  • Buat backup atau snapshot semua VM yang menjalankan role service-discover server. Kalau ada snapshot virtualisasi, sangat disarankan bikin snapshot tepat sebelum memulai.
  • Pastikan semua Consul server node sehat dan leader cluster terpilih dengan benar.
  • Buat backup direktori dan file berikut pada setiap node terdampak: /etc/zextras/service-discover/, /var/lib/service-discover/, salinan cluster-credentials.tar.gpg yang ada, serta file konfigurasi service-discover custom.
  • Export dan simpan salinan konfigurasi Consul dan mesh saat ini sebelum melakukan perubahan.
  • Pastikan kalian punya akses administratif ke semua node di mesh dan perintah manajemen LDAP bisa dijalankan.
  • Rencanakan maintenance window. Selama prosedur, service discovery tidak tersedia dan operasi cluster bisa terganggu sampai semua node rejoin.

Lanjut hanya setelah memastikan backup tersedia dan semua node reachable serta beroperasi normal.

Prosedur Reset Credentials

1. Identifikasi Mesh Leader

curl http://127.0.0.1:8500/v1/status/leader

2. Hapus service-discover pada Follower Server Node

Pada node lain yang menjalankan service-discover server, hapus service-discover dari installed services di LDAP:

/opt/zextras/bin/zmprov -l ms $(hostname -f) -zimbraServiceEnabled service-discover
/opt/zextras/bin/zmprov -l ms $(hostname -f) -zimbraServiceInstalled service-discover
systemctl stop service-discover
rm /etc/zextras/service-discover/config.json
rm /etc/zextras/service-discover/main.json
rm /var/lib/service-discover/*.pem
rm /var/lib/service-discover/data/raft/peers.info
rm /etc/zextras/service-discover/cluster-credentials.tar.gpg
rm /var/lib/service-discover/password

3. Bangun Ulang Quorum pada Leader Node

Ambil Consul server id dari /var/lib/service-discover/data/node-id, lalu buat file baru /var/lib/service-discover/data/raft/peers.json dengan isi berikut (ganti dengan node_id dan IP kalian):

cat > /var/lib/service-discover/data/raft/peers.json << 'EOF'
[
  {
    "id": "server-id",
    "address": "server-IP:8300",
    "non_voter": false
  }
]
EOF

Penting, perhatikan atribut non_voter harus di-set false.

Restart service-discover:

systemctl restart service-discover

Verifikasi node masih jadi cluster leader:

curl http://127.0.0.1:8500/v1/status/leader

4. Reset ACL Bootstrap State

Jalankan:

consul acl bootstrap

Perintah ini mengembalikan nilai reset index yang dibutuhkan selama prosedur reset. Outputnya selalu mirip seperti ini:

Failed ACL bootstrapping: Unexpected response code: 403 (Permission denied: ACL bootstrap no longer allowed (reset index: 908))

Nilai reset index ada di akhir output (reset index: 908), pada contoh ini 908.

sudo -u service-discover bash -c "echo 908 > /var/lib/service-discover/data/acl-bootstrap-reset"

Kemudian stop service-discover:

systemctl stop service-discover

Hapus file berikut:

rm /etc/zextras/service-discover/config.json
rm /etc/zextras/service-discover/main.json
rm /var/lib/service-discover/*.pem
rm /var/lib/service-discover/data/raft/peers.info
rm /etc/zextras/service-discover/cluster-credentials.tar.gpg
rm /var/lib/service-discover/password

Hapus credential yang tersimpan di LDAP:

/opt/zextras/bin/zmprov -l mcf carbonioMeshCredentials ""

5. Inisialisasi Ulang Mesh dengan Password Baru

Jalankan setup wizard dengan opsi --first-instance:

read -s -p "Insert Mesh Password:" MESH_SECRET
service-discover setup $(hostname -i) --first-instance --password=$MESH_SECRET

Verifikasi password sudah tersimpan dengan benar:

cat /var/lib/service-discover/password

6. Rejoin Sisa Consul Server Node

Pada semua service-discover server node lainnya, jalankan:

systemctl stop service-discover
rm /etc/zextras/service-discover/config.json
rm /etc/zextras/service-discover/main.json
rm /var/lib/service-discover/*.pem
rm /var/lib/service-discover/data/raft/peers.info
rm /etc/zextras/service-discover/cluster-credentials.tar.gpg
rm /var/lib/service-discover/password

Rejoin ke mesh:

service-discover setup-wizard

Aktifkan kembali service service-discover:

/opt/zextras/bin/zmprov -l ms $(hostname -f) +zimbraServiceEnabled service-discover
/opt/zextras/bin/zmprov -l ms $(hostname -f) +zimbraServiceInstalled service-discover

7. Rejoin Semua Client Node (Consul Agent)

Pada semua node yang menjalankan agent service-discover:

systemctl stop service-discover
rm /etc/zextras/service-discover/config.json
rm /etc/zextras/service-discover/main.json
rm /var/lib/service-discover/*.pem
rm /var/lib/service-discover/data/raft/peers.info
rm /etc/zextras/service-discover/cluster-credentials.tar.gpg
rm /var/lib/service-discover/password

Join lagi ke mesh:

service-discover setup-wizard

Penutup

Setelah semua server dan client node berhasil rejoin, mesh akan kembali berjalan dengan credential baru. Kunci dari prosedur cluster ini ada di penyusutan sementara ke satu leader node, reset ACL bootstrap dengan reset index yang benar, lalu inisialisasi ulang sebagai first instance. Karena service discovery sempat down selama proses, pastikan selalu dijalankan dalam maintenance window dan dengan backup yang sudah siap.

Leave a Reply

Your email address will not be published. Required fields are marked *