Mula-mula mari kita lihat rupa seni bina keseluruhan rangka kerja Di sini kita mempunyai tiga penyedia perkhidmatan dan tiga pemanggil perkhidmatan, yang melepasi Consul
dan Nginx
, dan <.> Untuk mencapai pengimbangan beban. Consul-template
Penjelasan Contoh ini adalah untuk pengimbangan beban RPC RPC ialah protokol tcp, jadi Nginx perlu mengkonfigurasi modul tcp untuk menyokong pengimbangan beban tcp.
Kluster digunakan untuk pendaftaran perkhidmatan, mendaftarkan berbilang contoh perkhidmatan dan menyediakan perkhidmatan Consul
kepada dunia luar. RPC
digunakan untuk memantau status perkhidmatan dalam Consul-template
dalam masa nyata dan menjana fail konfigurasi Consul
dengan fail templatnya sendiri. Nginx
Gunakan fail konfigurasi anda sendiri dan fail konfigurasi yang dijana dalam langkah kedua untuk melaksanakan pengimbangan beban. Nginx
, pastikanNginx
versi melebihi 1.9.0Nginx
Dikatakan bahawa modul ini tidak dipasang secara lalai Anda boleh menyemaknya selepas pemasangan selesai parameter, ini bermakna TCP
sudah disokong. Jika tidak, susun semula dan tambah parameter untuk pemasangan. --with-stream
TCP
/etc/nginx
nginx -t
1 Muat turun fail versi sistem yang sepadan
2 Buka zip dan salin ke laluan
[silence@centos145 ~]$ tar xzvf consul-template_0.19.4_linux_amd64.tgz [silence@centos145 ~]$ mv ./consul-template /usr/sbin/consul-template
3 folder baharu , dan buat tiga fail PATH
digunakan terutamanya untuk mengkonfigurasi parameter permulaan
, termasuk alamat pelayan, lokasi fail templat, lokasi fail konfigurasi yang dijana, dsb. Kecuali untuk blok config.hcl
dan consul-template
, parameter lain adalah pilihan. consul
consul
5.template
Konfigurasi blok
consul { auth { enabled = false username = "test" password = "test" } address = "172.20.132.196:8500" retry { enabled = true attempts = 12 backoff = "250ms" max_backoff = "1m" } }
Consul
6.Consul
Laluan templat konfigurasi blok dan lokasi fail yang dijana, serta apa yang perlu dilaksanakan selepas menjana Perintah fail. Di sini kita perlu memuat semula fail konfigurasi, jadi arahan tetapan ditulis sebagai template
template { source = "/etc/nginx/consul-template/template.ctmpl" destination = "/etc/nginx/consul-template/nginx.conf" create_dest_dirs = true command = "/usr/sbin/nginx -s reload" command_timeout = "30s" error_on_missing_key = false perms = 0600 backup = true left_delimiter = "{{" right_delimiter = "}}" wait { min = "2s" max = "10s" } }
nginx
7.nginx -s reload
, kerana hanya alamat pelayan dan nombor port diperlukan di sini, jadi templat fail Seperti berikut: [root@centos145 consul-template]# cat template.ctmpl stream { log_format main '$remote_addr - [$time_local] ' '$status'; access_log /var/log/nginx/tcp_access.log main; upstream cloudsocket { \{\{range service "ad-rpc-device-server"}}server \{\{.Address}}:\{\{.Port}};{{end}} } server { listen 8888; proxy_pass cloudsocket; } }
8. Mulakantemplate.ctmpl
consul-template
consul-template -config=./config.hcl
Gunakan fail konfigurasi config.hcl untuk memudahkan arahan consul-template -consul-addr=172.20. 132.196:8500 -template=./template.ctmpl:./nginx.conf
9 Fail
permulaan kosong dan selepas permulaan kandungannya ialah
[root@centos145 consul-template]# cat nginx.conf stream { log_format main '$remote_addr - [$time_local] ' '$status'; access_log /var/log/nginx/tcp_access.log main; upstream cloudsocket { server 172.20.139.77:8183; } server { listen 8888; proxy_pass cloudsocket; } }
nignx.conf
Pastikan perkhidmatan telah berjaya didaftarkan di Konsul, dan anda boleh melihat bahawa alamat pelayan dan port telah dikonfigurasikan.
direktori pemasangan10 Perkenalkan fail konfigurasi yang dijana oleh
ke dalam
nginx
nginx.conf
consul-template
include /etc/nginx/consul-template/nginx.conf;
Ambil perhatian bahawa fail konfigurasi yang dihasilkan tidak boleh diminum Kandungan dalam fail konfigurasi nginx itu sendiri diulang! ! !
dan berubah secara dinamik apabila perkhidmatan ditambah dan ditinggalkan.11 Mulakan contoh perkhidmatan dan semak fail
yang dijana Anda akan mendapati bahawa senarai perkhidmatan ditambah secara dinamik dalam
[root@centos145 consul-template]# cat nginx.conf stream { log_format main '$remote_addr - [$time_local] ' '$status'; access_log /var/log/nginx/tcp_access.log main; upstream cloudsocket { server 172.20.139.77:8183; } server { listen 8888; proxy_pass cloudsocket; } }
nginx.conf
Mulakan satu lagi, dan senarai perkhidmatan menjadi duaupstream cloudsocket{}
[root@centos145 consul-template]# cat nginx.conf stream { log_format main '$remote_addr - [$time_local] ' '$status'; access_log /var/log/nginx/tcp_access.log main; upstream cloudsocket { server 172.20.139.77:8183;server 172.20.139.77:8184; } server { listen 8888; proxy_pass cloudsocket; } }
Pelanggan hanya perlu mengkonfigurasi alamat dan port
apabila membuat panggilan untuk mengkonfigurasi alamat perkhidmatan dan port, akan memajukannya secara automatik. thrift
Atas ialah kandungan terperinci Cara menggunakan Consul-template+Nginx untuk melaksanakan pengimbangan beban Konsul Jimat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!