Docker --------- implantação do cônsul

Docker --------- implantação do cônsul

Um, introdução do cônsul

Consul é uma ferramenta de código aberto lançada pela HashiCorp, usada para implementar a descoberta de serviços e configuração de sistemas distribuídos

1. As características do cônsul

Suporta verificação de integridade, permitindo o armazenamento de pares chave-valor

Com base na linguagem Golang, forte portabilidade

Suporte para controle de acesso ACL

Funciona perfeitamente com contêineres leves, como Docker

2. Descrição do porto interno do Consul

porta Descrição
TCP / 8300 A porta 8300 é usada para o nó do servidor e o cliente usa o protocolo RPC da porta para chamar o nó do servidor
TCP / UDP / 8301 A porta 8301 é usada para a comunicação entre todos os nós em um único data center, ou seja, para sincronizar as informações do pool da LAN. Ela permite que todo o data center descubra automaticamente endereços de servidor, detecte falhas de nó de maneira distribuída e transmita eventos (como eventos de eleição de líder)
TCP / UDP / 8302 A porta 8302 é usada para a sincronização de informações dos nós do servidor entre um ou vários data centers, ou seja, a sincronização das informações do pool da LAN. É otimizada para a alta latência da Internet e pode realizar solicitações entre data centers
8500 A porta 8500 é baseada no protocolo HTTP, interface de API do usuário ou acesso à IU da WEB
8600 A porta 8600 é usada como um servidor DNS, o que nos permite consultar informações de nó por nome de nó

Dois, construir experimento cônsul

1. Implantação de ambiente

Prepare centos com docker com antecedência

Hospedeiro Pacote de software
192.168.132.50 Docker-ce 、 Compose 3 、 Consul 、 Consul-templo
192.168.132.60 Docker-ce 、 Registrator

2. Instale o pacote de software consul (192.168.132.50)

mkdir /root/consul
cd /root/consul
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/bin
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.132.50 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

3. Veja o cluster

consul members
consul info | grep leader

Insira a descrição da imagem aqui

4. Obtenha o cluster por meio de http api

curl 127.0.0.1:8500/v1/status/peers  //查看集群server成员
curl 127.0.0.1:8500/v1/status/leader  //集群Raf leader
curl 127.0.0.1:8500/v1/catalog/services  //注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nginx  //查看nginx服务信息
curl 127.0.0.1:8500/v1/catalog/nodes  //集群节点详细信息

Insira a descrição da imagem aqui

5. Operar em outro servidor (192.168.132.60)

docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.132.60 \
consul://192.168.132.50:8500



Insira a descrição da imagem aqui

6. Função de serviço de teste

docker run -itd -p 83:80 --name test-1 -h test1 nginx
docker run -itd -p 84:80 --name test-2 -h test2 nginx
docker run -itd -p 88:80 --name test-3 -h test3 httpd
docker run -itd -p 89:80 --name test-4 -h test4 httpd

Insira a descrição da imagem aqui

7. Digite http://192.168.132.50:8500 no navegador

Insira a descrição da imagem aqui

Ver no servidor cônsul

[root@consul consul]#curl 127.0.0.1:8500/v1/catalog/services
{
    
    "consul":[],"httpd":[],"nginx":[]}
vim /root/consul/nginx.ctmpl

upstream http_backend {
    
    					#群集模块模板
    {
    
    {
    
    range service "nginx"}}				#指定nginx服务项
     server {
    
    {
    
    .Address}}:{
    
    {
    
    .Port}};			#指向真实服务器的地址和端口“{
    
    {
    
    .Address}}” 此参数会根据consul群集的参数自动设置上去
     {
    
    {
    
    end}}						#结束语句(以上为轮询请求方式)
}

server {
    
    
       listen 88;					#对外提供的端口,可自行设置,只要不起冲突
       server_name localhost 192.168.132.50;		#本地反向代理的节点地址
       access_log /var/log/nginx/kgc.cn-access.log;	#访问日志文件目录(需手动创建)
       index index.html index.php;			#指定访问的index 首页类型
       location / {
    
    
          proxy_set_header HOST $host;			#反向代理的请求头部信息
          proxy_set_header X-Real-IP $remote_addr;	#真实服务器IP
          proxy_set_header Client-IP $remote_addr; 	#客户IP
          proxy_set_header X-Fprwarded-For $proxy_add_x_forwarded_for;	#Forward转发地址
          proxy_pass http://http_backend;		#反向代理指向upstream地址池
                 }
       }

8. Compilar e instalar manualmente o serviço nginx

yum install gcc gcc-c++ pcre-devel zlib-devel -y

tar zxvf nginx-1.12.0.tar.gz -C /opt
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx
make && make install


Configurar nginx

vim /usrlocal/nginx/conf/nginx.conf



http {
    
    
    include       mime.types;
    include       vhost/*.conf;			#vhost目录需手动创建
#在http模块下 添加include vhost/*.conf

mkdir /usr/local/nginx/conf/vhost

mkdir /var/log/nginx					

/usr/local/nginx/sbin/nginx

9. Configure e inicie o modelo

Faça upload do pacote consul-template_0.19.3_linux_amd64.zip para o diretório / root

unzip consul-template_0.19.3_linux_amd64.zip 
mv consul-template /usr/bin/
consul-template -consul-addr 192.168.132.50:8500 -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/test.conf:/usr/local/nginx/sbin/nginx -s reload" --log-level=info

Abra um terminal para ver o arquivo de configuração gerado

cat /usr/local/nginx/conf/vhost/test.conf

Insira a descrição da imagem aqui

Adicione um nó de contêiner nginx, teste de descoberta de servidor e funções de atualização de configuração

docker run -itd -p 85:80 --name test-5 -h test5 nginx

Digite http://192.168.132.50:83 no navegador

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_44505291/article/details/115302424
Recomendado
Clasificación