GNU/Linux >> Belajar Linux >  >> Linux

Cara sederhana untuk melakukan penemuan layanan di Linux

Penemuan layanan tidak dapat memperoleh definisi yang tepat tanpa pengakuan dari jaringan komputer yang ada. Jaringan komputer menetapkan protokol komunikasi yang diperlukan untuk perangkat jaringan untuk berbagi sumber daya yang tersedia melalui node jaringannya. Berbagi sumber daya ini melibatkan perangkat jaringan dan layanan yang telah ditentukan sebelumnya di jaringan tersebut.

Solusi untuk penemuan atau deteksi otomatis perangkat dan layanan jaringan ini di bawah jaringan komputer adalah definisi penemuan layanan yang layak. Agar penemuan layanan di bawah jaringan komputer yang dikonfigurasi menjadi lengkap, diperlukan bantuan protokol jaringan yang disebut Service Discovery Protocol (SDP). Dengan protokol ini, pengguna dan administrator jaringan tidak perlu bergantung pada keahlian konfigurasi jaringan mereka untuk menjalankan semuanya.

Karena penemuan layanan berkomunikasi dengan agen perangkat lunak di jaringan komputer, protokol komunikasinya harus mematuhi bahasa jaringan yang sama untuk mencegah intervensi pengguna yang berkelanjutan setiap kali eksekusi langkah penting diperlukan.

Mengkonseptualisasikan penemuan layanan dalam lingkungan produksi

Secara tradisional, pengembangan aplikasi mengambil pendekatan monolitik. Pendekatan ini kemudian difaktorkan kembali dengan memiliki satu aplikasi yang ada sebagai bagian kecil yang disinkronkan yang bekerja menuju tujuan bersama. Konsep ini mendefinisikan kegunaan layanan mikro di mana komponen yang terpisah bekerja menuju tujuan aplikasi tunggal. SaaS atau aplikasi perusahaan adalah pilihan untuk pendekatan pengembangan aplikasi ini.

Aplikasi yang ditentukan oleh komponen kecil memudahkan untuk menghilangkan bug dan mengidentifikasi serta mengganti komponen aplikasi yang tidak berfungsi penuh. Karena komponen ini dapat dirusak, penerapan komponen tersebut di lingkungan produksi menghubungkannya dengan layanan jaringan yang mengidentifikasi lokasi komponen dan layanan lain yang menyertainya.

Konfigurasi otomatis instance layanan ke komponen aplikasi produksi ini memecah definisi penemuan layanan.

Alat penemuan layanan sumber terbuka populer untuk Linux

Evolusi arsitektur layanan mikro dan kontribusinya untuk mengembangkan aplikasi modern telah menjadikan penemuan layanan sebagai hal yang harus dimiliki. Saat komponen aplikasi baru diterapkan, penemuan layanan menghilangkan latensi apa pun antara aplikasi dan titik akhir layanan lainnya. Jika Anda mempertimbangkan untuk memfasilitasi beberapa fungsi penemuan layanan melalui layanan mikro, Anda harus berkenalan dengan alat sumber terbuka ini.

Konsul

Selain memenuhi tujuan penemuan layanan, Consul adalah alat yang efektif untuk memantau dan mengonfigurasi pengaturan produksi jaringan. Ini menciptakan penyimpanan data peer-to-peer dan cluster dinamis melalui perpustakaan Serf. Untuk alasan ini, alat penemuan layanan ini tersebar luas.

Consul disajikan sebagai penyimpanan nilai kunci untuk mengonfigurasi dan mengelola lingkungan produksi. Serf ada sebagai protokol gosip yang secara efektif mengelola hal-hal seperti deteksi kegagalan di cluster yang dibuat. Protokol konsensus menangani konsistensi sistem dalam lingkungan produksi ini melalui Raft.

Fitur Konsul Utama

  • Asalkan ada antarmuka aplikasi seperti MySQL, DNS, atau HTTP; layanan dapat dengan mudah dan otomatis mendaftarkan diri. Juga mudah untuk mendeteksi dan merangkum layanan eksternal lain yang diperlukan untuk fungsionalitas yang benar dari lingkungan jaringan penyiapan.
  • Alat ini memiliki dukungan ekstensif untuk konfigurasi DNS. Itu membuat proses integrasi DNS mulus.
  • Jika cluster penyiapan memiliki masalah kesehatan, Konsul akan secara efektif melakukan health check pada cluster ini dan mendaftarkan hasil diagnostik pada log yang dikirim ke operator jaringan yang relevan.
  • Fitur penyimpanan kunci/nilai Consul efektif dalam menandai fitur dan membuat konfigurasi dinamis.
  • Alat ini bekerja dengan API HTTP untuk menyimpan dan mengambil data kunci/nilai yang ditentukan dan dibatasi dalam penyimpanan kunci/nilai terdistribusi.

Menyiapkan cluster Konsul

Panduan ini akan berisi gagasan praktis tentang mencapai penemuan layanan melalui cluster Konsul dengan menggunakan banyak node.

Prasyarat
  • Pengaturan ini akan lebih produktif jika Anda memiliki akses ke tiga server Linux.
  • Ketiga server Anda harus membuka beberapa port tertentu. Mereka adalah 8300 untuk TCP, 8301 untuk TCP &UDP, 8302 untuk TCP &UDP, 8400 untuk TCP, 8500 untuk TCP, dan 8600 untuk TCP &UDP. Bergantung pada server yang Anda gunakan, mis., AWS, GCP, atau Azure, tag firewall dan grup keamanan Anda harus dikonfigurasi dengan benar sehingga port yang disebutkan diizinkan untuk berkomunikasi dengan mudah.
Penyiapan cluster konsul

Karena kami menggunakan tiga server, kami akan menerapkan cluster Konsul tiga simpul. Kita dapat memberi node ini nama consul-1, consul-2, dan consul-3. Langkah-langkah berikut akan membawa kita ke cluster Konsul yang berfungsi penuh.

Menginstal dan mengonfigurasi Konsul pada tiga node yang ditentukan

Langkah satu hingga tiga berlaku untuk semua node Konsul yang ditentukan.

Langkah 1 :Pada setiap terminal server, navigasikan direktori bin dan gunakan perintah yang berlaku tentang distribusi Linux Anda untuk mengunduh biner Konsul Linux. Tautan terakhir ini menyoroti prosedur penginstalan untuk manajer paket Linux lainnya.

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install consul

Langkah 2: Direktori berikut harus dibuat. Perhatikan jalur direktori.

sudo mkdir -p /etc/consul.d/scripts 
sudo mkdir /var/consul

Langkah 3: Dari tiga server, pilih satu dan jalankan perintah berikut di terminalnya untuk membuat rahasia Konsul Anda. Rahasia yang dihasilkan harus disimpan pada file teks.

consul keygen

Langkah 4: Ketiga server Anda harus memiliki file konfigurasi berikut. Buat seperti yang ditunjukkan di bawah ini.

sudo vi /etc/consul.d/config.json

Isi file config.json yang dibuat di atas dengan data berikut. Pada file ini, nilai “encrypt” harus diganti dengan nilai Consul secret yang Anda buat pada langkah 3. Selain itu, nilai “start_join” harus berisi alamat IP masing-masing dari tiga server yang Anda pilih untuk digunakan.

{ 
    "bootstrap_expect": 3, 
    "client_addr": "0.0.0.0", 
    "datacenter": "Us-Central", 
    "data_dir": "/var/consul", 
    "domain": "consul", 
    "enable_script_checks": true, 
    "dns_config": { 
        "enable_truncate": true, 
        "only_passing": true 
    }, 
    "enable_syslog": true, 
    "encrypt": "generated_Consul_key_value", 
    "leave_on_terminate": true, 
    "log_level": "INFO", 
    "rejoin_after_leave": true, 
    "server": true, 
    "start_join": [
        "server-1_IP", 
        "server-2_IP", 
        "server-3_IP" 
    ], 
    "ui": true 
}
Membuat layanan Konsul

Ketiga node atau server kami harus melewati langkah-langkah berikut.

Langkah 1: Membuat file Systemd

sudo vi /etc/systemd/system/consul.service

Setelah file dibuat, isi dengan data berikut.

[Unit] 
Description=Consul Startup process 
After=network.target 

[Service] 
Type=simple 
ExecStart=/bin/bash -c '/usr/local/bin/consul agent -config-dir 
/etc/consul.d/' 
TimeoutStartSec=0 

[Install] 
WantedBy=default.target

Langkah 2: Lakukan reload pada daemon sistem

sudo systemctl daemon-reload
Bootstrapping dan memulai cluster

Untuk meluncurkan layanan Consul di server pertama atau consul-1, jalankan perintah berikut di terminalnya.

sudo systemctl start consul

Untuk meluncurkan layanan Consul di dua server lainnya, consul-2 dan consul-3, Anda harus menjalankan perintah yang sama pada terminal sistem OS masing-masing.

sudo systemctl start consul

Pada masing-masing dari tiga server, Anda akan dapat mencatat status cluster masing-masing dengan menjalankan perintah berikut pada masing-masing terminalnya.

 /usr/local/bin/consul members

Untuk mengetahui apakah penyiapan cluster Konsul Anda berhasil, output yang Anda terima dari menjalankan perintah di atas harus memiliki beberapa kesamaan dengan berikut ini.

[fosslinux@consul-1 ~]$ /usr/local/bin/consul members
Node       Address       Status     Type     Build     Protocol     DC 
Segment 
consul-1 10.128.0.7:8301 alive     server   1.2.0        2     us-central 
<all> 
consul-2 10.128.0.8:8301 alive     server   1.2.0        2     us-central 
<all> 
consul-3 10.128.0.9:8301 alive     server   1.2.0        2     us-central 
<all>
Mengakses UI Konsul

Jika versi Konsul yang Anda instal adalah 1.20 atau lebih baru, itu dikemas dengan komponen UI Konsul bawaan. UI Konsul ini berbasis web, dan mengaksesnya di browser Anda mengharuskan Anda mematuhi aturan sintaks URL berikut.

http://<your-consul-server-IP-address>:8500/ui

Contoh implementasi aturan sintaks URL di atas akan menjadi sesuatu yang mirip dengan berikut ini:

http://46.129.162.98:8500/ui

Kepraktisan Konsul

Kelemahan menggunakan Konsul adalah ketika berhadapan dengan kompleksitas yang melekat pada sistem terdistribusi yang dikonfigurasi dengannya. Masalah ini bersifat umum dan tergantung pada arsitektur sistem ini. Ini tidak ada hubungannya dengan aspek kinerja Konsul.

Keuntungan lain bekerja dengan Consul adalah ia memiliki semua pustaka yang diperlukan sehingga pengguna tidak perlu mendefinisikan dan menggunakan pustaka pihak ketiga. Kita dapat menyamakan konseptualisasi Konsul dengan Sidecar OSS Netflix. Di sini, klien non-Zookeeper tetap dapat ditemukan karena mereka dapat mendaftar di sistem.

Keunggulan alat penemuan layanan Konsul telah menarik perusahaan terkemuka seperti SendGrid, Percolate, DigitalOcean, Outbrain, dan EverythingMe.

Dll

Alat penemuan layanan Etcd menawarkan fungsionalitas penyimpanan kunci/nilai yang serupa dengan yang digambarkan di Konsul dan Penjaga Kebun Binatang. Dulunya merupakan komponen utama CoreOS sebelum status penghentian OS. Bahasa pemrograman Go adalah kunci dalam pengembangannya. Ia juga menggunakan Raft sebagai sarana untuk menangani protokol konsensus.

Cepat dan andal dalam penyediaan API berbasis JSON dan HTTP. Ketentuan fungsional ini selanjutnya dilengkapi dengan permintaan dan pemberitahuan push. Dalam pengaturan praktis, cluster yang ditentukan atau dibuat akan menampung lima atau tujuh node. Selain penemuan layanan, arsitektur layanan mikro yang mengimplementasikan Etcd dalam wadahnya juga akan mendapat manfaat dari pendaftaran layanan ini.

Di bawah pendaftaran layanan, Etcd menangani penulisan pasangan nilai kunci yang diperlukan. Di bawah penemuan layanan, Etcd menangani pembacaan pasangan nilai kunci yang dibuat.

Untuk aplikasi lain yang dibuat untuk berkomunikasi dengan Etcd, mereka harus mematuhi protokol proyek confd. Protokol ini membuat file konfigurasi statis dari informasi yang disimpan Dll. Dalam pengaturan ini, klien bertanggung jawab untuk mengelola setiap kegagalan koneksi yang layak dan membuat koneksi ulang melalui instance layanan lain yang layak.

Perusahaan terkenal yang memiliki Etcd di resume mereka termasuk CloudGear, Headspace, Red Hat, Kubernetes, Apptus, Zenreach, Cloud Foundry, dan Google. Dukungan komunitas yang berkembang dll meningkatkan pengalaman pengembang pada platform alat penemuan layanan ini.

Menyiapkan Dll

Kemampuan Etcd untuk menyimpan dan mengambil konfigurasi bukan satu-satunya fitur utamanya sebagai penyimpanan nilai kunci sumber terbuka. Cluster Etcd yang dibuat memiliki masalah kegagalan node minimal karena ketersediaannya yang tinggi. Nilai tersimpannya diambil oleh klien melalui REST/gRPC.

Prasyarat

Persyaratan berikut akan membuat pengalaman Anda dalam menyiapkan cluster Dll lebih bermanfaat.

  • Dapatkan akses ke tiga server Linux yang berfungsi
  • Tiga pilihan server Anda harus dikonfigurasi dengan nama host yang valid.
  • Untuk komunikasi peer-to-peer dan permintaan klien yang efektif, port 2380 dan 2379 di server Anda harus diaktifkan dari aturan firewall sistem.
Menyiapkan cluster Etcd di mesin Linux Anda

Pengaturan cluster Etcd seharusnya tidak membuat Anda pusing karena relatif mudah, terutama dengan pendekatan bootstrap statis. Agar Anda berhasil melakukan bootstrap dengan pendekatan ini, Anda harus mengingat IP node Anda. Panduan penyiapan ini akan mencakup semua langkah yang mungkin Anda perlukan untuk berhasil membuat kluster server Linux karena kita berurusan dengan penyiapan multinode.

Agar etcd berjalan sebagai layanan, kita juga perlu mengonfigurasi file systemd. Berikut ini hanyalah contoh dari nama host yang disebutkan ke hubungan alamat IP yang akan kita gunakan dalam panduan penyiapan ini.

etcd-1 : 10.128.0.7

etcd-2 : 10.128.0.8

etcd-3 : 10.128.0.9

Jika Anda memiliki hak istimewa administratif yang diperlukan, Anda dapat mengubah nama host server Anda untuk mencerminkan preferensi Anda yang dapat disesuaikan.

Saatnya memulai penyiapan cluster etcd.

Tiga simpul

Langkah-langkah berurutan berikut berlaku untuk ketiga node server.

Langkah 1: Pada setiap terminal server, navigasikan ke direktori src dengan perintah berikut:

cd /usr/local/src

Langkah 2: Saat merujuk Rilis Github, Anda harus dapat mengambil rilis etcd terbaru. Pastikan untuk mengunduh versi stabil terbarunya.

sudo wget "https://github.com/coreos/etcd/releases/download/v3.3.9/etcd-v3.3.9-linux-amd64.tar.gz"

Langkah 3: Pada langkah ini, kita akan membuka tar biner etcd yang diunduh.

sudo tar -xvf etcd-v3.3.9-linux-amd64.tar.gz

Langkah 4: Proses untar harus menghasilkan file etcd dan etcdctl. Ekstraksi ini dapat dieksekusi etcd. Gunakan perintah berikut untuk memindahkannya ke direktori bin lokal.

sudo mv etcd-v3.3.9-linux-amd64/etcd* /usr/local/bin/

Langkah 5: Karena kami ingin pengguna etcd menjalankan layanan etcd, Anda perlu membuat pengguna, grup, dan folder etcd.

sudo mkdir -p /etc/etcd /var/lib/etcd
groupadd -f -g 1501 etcd
useradd -c "etcd user" -d /var/lib/etcd -s /bin/false -g etcd -u 1501 etcd
chown -R etcd:etcd /var/lib/etcd

Langkah 6: Pastikan Anda memiliki hak pengguna root saat melakukan tindakan berikut.

ETCD_HOST_IP=$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)
ETCD_NAME=$(hostname -s)

Urutan perintah di atas menetapkan dua variabel lingkungan. Variabel lingkungan pertama mengambil alamat IP server, dan variabel kedua mengaitkan alamat IP tersebut dengan nama host.

Dll sekarang membutuhkan file layanan systemd.

cat << EOF > /lib/systemd/system/etcd.service

Setelah membuat file layanan ini, isi file tersebut agar terlihat seperti di bawah ini.

[Unit]
Description=etcd service
Documentation=https://github.com/etcd-io/etcd 
 
[Service]
User=etcd
Type=notify
ExecStart=/usr/local/bin/etcd \\
 --name ${ETCD_NAME} \\
 --data-dir /var/lib/etcd \\
 --initial-advertise-peer-urls http://${ETCD_HOST_IP}:2380 \\
 --listen-peer-urls http://${ETCD_HOST_IP}:2380 \\
 --listen-client-urls http://${ETCD_HOST_IP}:2379,http://127.0.0.1:2379 \\
 --advertise-client-urls http://${ETCD_HOST_IP}:2379 \\
 --initial-cluster-token etcd-cluster-1 \\
 --initial-cluster etcd-1=http://10.142.0.7:2380,etcd-2=http://10.142.0.8:2380,etcd-3=http://10.142.0.9:2380 \\
 --initial-cluster-state new \\
 --heartbeat-interval 1000 \\
 --election-timeout 5000
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target
EOF

Bagian “–listen-client-urls” dari file ini harus diganti dengan tiga IP server yang digunakan. Bergantung pada server penyiapan, nilai “–name”, “–listen-peer-urls”, “–initial-advertise-peer-url”, dan “–listen-client-urls” akan berbeda. Untuk variabel ETCD_HOST_IP dan ETCD_NAME, nilai inputnya otomatis dan diganti oleh sistem.

Bootstrapping cluster etcd

Konfigurasi di atas dari langkah 1 hingga 6 harus berlaku untuk ketiga server Anda. Setelah itu, langkah selanjutnya adalah memulai dan mengaktifkan layanan etcd yang baru saja kita buat. Upaya ini harus berlaku untuk ketiga node. Server 1 akan mengasumsikan fungsionalitas node bootstrap. Setelah layanan etcd aktif dan berjalan, maka secara otomatis akan memilih satu node sebagai pemimpin. Jadi Anda tidak perlu khawatir untuk terlibat dalam konfigurasi node pemimpin ini.

systemctl daemon-reload
systemctl enable etcd
systemctl start etcd.service
systemctl status -l etcd.service
Verifikasi status cluster dll

Utilitas etcdctl yang sebelumnya kami ekstrak setelah mengunduh biner etcd bertanggung jawab untuk memulai interaksi dengan cluster etcd. Ketiga node Anda harus memiliki utilitas ini di direktori /usr/local/bin.

Pemeriksaan sistem berikut ini berlaku pada semua node cluster dan tidak terbatas pada node tertentu. Pemeriksaan pertama adalah untuk menentukan status kesehatan cluster Anda.

etcdctl cluster-health

Anda juga dapat memeriksa dan memverifikasi status keanggotaan node cluster untuk menentukan apakah node tersebut memiliki status kepemimpinan.

etcdctl  member list

Secara default, Anda akan secara eksplisit mengakses fungsionalitas etcd v2 melalui etcdctl. Ini adalah asosiasi default. Jika Anda ingin mengakses etcd v3 dan fungsinya, menggunakan variabel “ETCDCTL_API=3” adalah pilihan yang layak. Untuk mengimplementasikan variabel ini, konfigurasikan sebagai variabel lingkungan. Atau, Anda dapat meneruskan variabel setiap kali Anda menggunakan perintah etcdctl.

Coba buat dan verifikasi pasangan nilai kunci berikut.

ETCDCTL_API=3 etcdctl put name5 apple
ETCDCTL_API=3 etcdctl put name6 banana
ETCDCTL_API=3 etcdctl put name7 orange
ETCDCTL_API=3 etcdctl put name8 mango

Untuk mengakses nilai name7, jalankan perintah berikut.

ETCDCTL_API=3 etcdctl get name7

Melalui penggunaan rentang dan awalan, dimungkinkan untuk membuat daftar semua kunci seperti yang digambarkan di bawah ini:

ETCDCTL_API=3 etcdctl get name5 name8 # lists range name5 to name8
ETCDCTL_API=3 etcdctl get --prefix name # lists all keys with name prefix

Apache Zookeeper

Layanan ini dapat digambarkan sebagai terpusat, terdistribusi, dan konsisten. Bahasa pemrograman Java bertanggung jawab atas pembuatannya. Apache Zookeeper dapat secara efektif mengelola perubahan cluster melalui protokol Zab. Peran sebelumnya adalah memelihara komponen klaster perangkat lunak di dunia Apache Hadoop.

Di sini, penyimpanan data ada di pohon, di dalam sistem file, atau di ruang nama hierarkis. Ketika klien terhubung ke jaringan ini, node akan terus ada. Di sisi lain, ketika pemutusan jaringan terjadi atau ada masalah dengan jaringan yang dikonfigurasi, node menghilang. Ketika masalah dengan kegagalan jaringan atau load balancing terjadi, terserah klien untuk menyelesaikannya. Saat Apache Zookeeper mendaftarkan layanan baru, klien menerima pemberitahuan terkait layanan ini.

Konsistensi sistem Zookeeper tidak melindunginya dari potensi kegagalan sistem. Beberapa platform mungkin mengalami masalah dalam mendaftarkan layanan yang diperlukan atau bahkan mengalami kesalahan saat menerapkan fungsi layanan baca dan tulis. Di sisi lain, Apache Zookeeper terus menjadi aplikasi yang kuat dan mapan dengan dukungan perpustakaan ekstensif yang menguntungkan komunitas penggunanya yang dinamis dan klien yang berkembang.

Perusahaan terkenal yang berasosiasi dengan Apache Zookeeper termasuk Apache Software Foundation, Luxoft, Solr, Reddit, Rackspace, Spero Solutions, F5 Networks, Cloudera, eBay, dan Yahoo!

Menyiapkan Apache Zookeeper

Apache Zookeeper sempurna untuk menangani berbagai beban kerja terdistribusi karena adaptasi fungsionalnya sebagai alat koordinasi terdistribusi.

Prasyarat
  • Anda memerlukan tiga Mesin Virtual (VM). Jumlah VM yang akan digunakan bisa lebih dari 3, tetapi jumlah tersebut harus ganjil untuk cluster ketersediaan tinggi.
  • Port 2181, 2888, dan 3888 harus diaktifkan melalui IPtables sistem server agar koneksi masuk VM terjadi melalui port ini. Port ini bertanggung jawab atas komunikasi Apache Zookeeper.

Individu yang bekerja di bawah penyedia cloud seperti AWS harus memiliki titik akhir, atau grup keamanan yang diaktifkan agar Apache Zookeeper bekerja dengan port ini.

Instalasi dan konfigurasi Apache Zookeeper

Ketiga VM Anda akan mendapat manfaat dari langkah-langkah berikut:

Langkah 1: Pembaruan server

 sudo yum -y update

Langkah 2: instalasi Jawa. Lewati langkah ini jika Java sudah terinstal.

 sudo yum  -y install java-1.7.0-openjdk

Langkah 3: Gunakan perintah “wget” untuk mengunduh Zookeeper.

wget http://mirror.fibergrid.in/apache/zookeeper/zookeeper-3.5.2-alpha/zookeeper-3.5.2-alpha.tar.gz

Langkah 4: Untar aplikasi Apache Zookeeper ke direktori /opt.

 sudo tar -xf zookeeper-3.5.2-alpha.tar.gz -C /opt/

Langkah 5: Navigasikan ke direktori aplikasi Apache Zookeeper dan ganti namanya menjadi

cd /opt
sudo mv zookeeper-* zookeeper

Langkah 6: Di dalam direktori /opt/zookeeper/conf, kita perlu bekerja dengan file bernama zoo.cfg. Buat file ini dan isi dengan data konfigurasi berikut.

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=<ZooKeeper_IP/hostname>:2888:3888
server.2=<ZooKeeper_iP/hostname>:2888:3888
server.3=<ZooKeeper_iP/hostname>:2888:3888

Tiga server Zookeeper Anda diwakili oleh Server 1, server 2, dan server 3. Variabel “ZooKeeper_IP” harus diganti dengan tiga alamat IP server Anda atau nama host yang dapat diselesaikan dari alamat IP yang dapat diidentifikasi ini.

Langkah 7:  File zoo.cfg yang kita buat dan isi menunjuk ke direktori data yang disebut lib, yang juga berisi direktori lain yang disebut zookeeper. Kita perlu membuat direktori ini karena belum ada.

 sudo mkdir /var/lib/zookeeper

Langkah 8: Di dalam direktori yang dibuat di atas, buat file myid.

 sudo touch /var/lib/zookeeper/myid

Langkah 9: File myid ini akan menyimpan nomor unik untuk mengidentifikasi setiap server Apache Zookeeper.

Untuk server Zookeeper 1

 sudo sh -c "echo '5' > /var/lib/zookeeper/myid"

Untuk server Zookeeper 2

 sudo sh -c "echo '6' > /var/lib/zookeeper/myid"

Untuk server Zookeeper 3

 sudo sh -c "echo '7' > /var/lib/zookeeper/myid"
Konfigurasi layanan Apache Zookeeper

Untuk memulai dan menghentikan Zookeeper, kita perlu menggunakan skrip. Namun, menjalankan skrip ini sebagai layanan membantu mengelolanya dengan lebih baik. Kita perlu membuka file zkServer.sh.

 sudo vi /opt/zookeeper/bin/zkServer.sh

File yang dibuka di bawah “#!/usr/bin/env” mengisinya dengan data berikut.

# description: Zookeeper Start Stop Restart
# processname: zookeeper
# chkconfig: 244 30 80

Pada file zkServer.sh yang sama, lacak live “#use POSTIX interface, symlink…”. Ganti dan gantikan variabel yang menggantikan garis tersebut dengan nilai-nilai ini.

ZOOSH=`readlink $0`
ZOOBIN=`dirname $ZOOSH`
ZOOBINDIR=`cd $ZOOBIN; pwd`
ZOO_LOG_DIR=`echo $ZOOBIN`

Layanan Zookeeper sekarang membutuhkan symlink.

sudo ln -s /opt/zookeeper/bin/zkServer.sh /etc/init.d/zookeeper

Menu boot harus mengakomodasi Zookeeper.

sudo chkconfig zookeeper on

Ketiga server Anda harus di-restart dengan perintah berikut. Jalankan di terminal masing-masing.

 sudo  init 6

Setelah server dimulai ulang, pengelolaannya akan mudah dilakukan melalui urutan perintah berikut.

sudo service zookeeper status
sudo service zookeeper stop
sudo service zookeeper start
sudo service zookeeper restart

Saat perintah untuk memeriksa status Zookeeper berjalan, output terminal harus serupa dengan berikut ini.

/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader

Salah satu dari tiga server ditetapkan sebagai mode pemimpin, dan dua lainnya mempertahankan mode pengikut.

Catatan akhir

Penemuan layanan melayani dua tujuan penting:ketersediaan tinggi dan deteksi kegagalan. Dengan lebih banyak fungsi dalam antrean, implementasi infrastruktur tidak dapat diselesaikan tanpa mengenali dan mengonfigurasi alat penemuan layanan seperti Consul, Etcd, dan Apache Zookeeper. Alat-alat ini bersifat open-source dan secara fundamental efektif dalam fungsi penyampaian layanannya. Oleh karena itu, Anda tidak akan menemui hambatan apa pun yang mencoba menguji atau menerapkan mekanisme penemuan layanan sederhana pada sistem Linux Anda.


Linux
  1. Layanan OS Linux 'dhcpd'

  2. Layanan OS Linux 'anacron'

  3. Layanan OS Linux 'iptables'

  1. 'jaringan' Layanan OS Linux

  2. 'portmap' layanan OS Linux

  3. Layanan OS Linux 'smartd'

  1. Layanan OS Linux 'diaudit'

  2. Layanan OS Linux 'nfs'

  3. Layanan OS Linux 'microcode_ctl'