编程知识 cdmana.com

Docker -- consult nginx cluster load balancing & Harbor

Docker--consule-Nginx Cluster load balancing &harbor

                    Docker--consule-Nginx Cluster load balancing &harbor
#Consule  Deploy 
 The server :  192.168.100.200  Host name docker01 consule Service node  Docker-ce,Compose,Consul-template
 The server :  192.168.100.190  Host name docker02 web  Service node  Docker-ce,registrator            

#------------------------------Consule  The server 
1. Deploy Docker-Compose Environmental Science 
yum install -y docker-ce
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose    '// stay Linux We can go from GitHub Download its binary package to use , This command is to download Docker Compose The current stable version of '
chmod +x /usr/local/bin/docker-compose
docker-compose -v
# Or upload files 
cp -p docker-compose /usr/local/bin
#// It's a tool , Add directly to /usr/local/bin/  Use it as a tool                    
2. Deploy consul
mkdir /root/consul
cp consul_0.9.2_linux_amd64.zip /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.100.200 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

// View cluster status 
consul members
consul info | grep leader
// adopt httpd api  Get cluster information 
curl 127.0.0.1:8500/v1/status/peers  " View clusters server member "
curl 127.0.0.1:8500/v1/status/leader  " View clusters Raf leader"
curl 127.0.0.1:8500/v1/catalog/services  " Sign up for all services "
curl 127.0.0.1:8500/v1/catlog/nginx  " see nginx Service information "

------------------------Web Container services through registrator Join the cluster automatically ------------
0.docker-ce Environmental Science 
1.web Node installation registrator
docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.100.190 \   " refer to web Node server address "
consul://192.168.100.200:8500   " refer to consul Server address "

// Browser access  
192.168.100.200:8500
2. Test whether the service discovery function is normal 

docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx
docker run -itd -p:88:80 --name test-03 -h test03 httpd
docker run -itd -p:89:80 --name test-04 -h test04 httpd

3.  verification httpd  and nginx  Whether the server is registered with consul
 Input  http://192.168.100.200:9500  Click on nodes   Click on  consul-server01  There will be 5 A service 
// stay consul View services on the server 
[root@docker01 ~]# curl 127.0.0.1:8500/v1/catalog/services
{"consul":[],"httpd":[],"nginx":[]}[root@docker01 ~]# 

#--------------------------------Consule  The server 
4.consul Server installation consul-template

unzip consul-template_0.19.3_linux_amd64.zip 
cp consul-template /usr/local/bin

5. Get ready template nginx  Template file 
// stay consul On the operation 
vim /root/consul/nginx.ctmpl
upstream http_backend {
   {{range service "nginx"}}
    server {{.Address}}:{{.Port}};
     {{end}}
}

server {
  listen 83;
  server_name localhost 192.168.100.200;
  access_log /var/log/nginx/tang.cn-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
  }
}

6.  Compilation and installation nginx
yum install gcc pcre-devel zlib-devel -y
tar zxvf nginx-1.12.0.tar.gz -C /opt
[root@docker01 consul]# cd /opt
[root@docker01 opt]# ls
containerd  nginx-1.12.0  rh
[root@docker01 opt]# cd nginx-1.12.0/
[root@docker01 nginx-1.12.0]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@docker01 nginx-1.12.0]# ./configure --prefix=/usr/local/nginx
[root@docker01 nginx-1.12.0]# make && make install
7.  To configure nginx

[root@docker01 nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    include vhost/*.conf;                   " Add sub configuration file "
    default_type  application/octet-stream;
    ......
}
// Create virtual host directory 
[root@docker01 nginx-1.12.0]# mkdir /usr/local/nginx/conf/vhost
// Create a directory of log files 
[root@docker01 nginx-1.12.0]# mkdir /var/log/nginx
// start-up nginx
[root@docker01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx 

8. Configure and start template
// Upload consul-template_0.19.3_linux_amd64.zip
root@docker01 /]# cp consul-template_0.19.3_linux_amd64.zip /root

[root@docker01 /]# unzip consul-template_0.19.3_linux_amd64.zip
[root@docker01 /]# mv consul-template /usr/bin/
[root@docker01 /]# consul-template -consul-addr 192.168.100.200:8500 \
-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/tang.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info                " Start and use the template to generate ngonx Sub profile of "

[root@docker01 ~]# netstat -ntap |grep 83
tcp        0      0 0.0.0.0:83              0.0.0.0:*               LISTEN      94743/nginx
// In addition, open a terminal to view the generation profile 
[root@docker01 vhost]# vim tang.conf 

upstream http_backend {

    server 192.168.100.190:83;

    server 192.168.100.190:84;

}

server {
  listen 83;
  server_name localhost 192.168.100.200;
  access_log /var/log/nginx/tang.cn-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
  }
}

9.  Add one more nginx Container node , Test service discovery and configuration update function 
// stay registrator  Server add container , register 
docker run -itd -p:85:80 --name test-05 -h test05 nginx
// stay consul Server side monitoring will automatically update 
2020/09/23 10:36:54.609791 [INFO] (runner) initiating run
2020/09/23 10:36:54.611630 [INFO] (runner) rendered "/root/consul/nginx.ctmpl" => "/usr/local/nginx/conf/vhost/tang.conf"
2020/09/23 10:36:54.611654 [INFO] (runner) executing command "/usr/local/nginx/sbin/nginx -s reload" from "/root/consul/nginx.ctmpl" => "/usr/local/nginx/conf/vhost/tang.conf"
2020/09/23 10:36:54.611685 [INFO] (child) spawning: /usr/local/nginx/sbin/nginx -s reload

// Check three Nginx  journal , Request normal polling to each container node 
docker logs -f test-01
docker logs -f test-02
docker logs -f test-05

[root@docker01 vhost]# cat  tang.conf   // View automatically generated sub configuration files 

upstream http_backend {

    server 192.168.100.190:83;  " Reverse proxy back-end nodes "

    server 192.168.100.190:84;

    server 192.168.100.190:85;

}

server {
  listen 83;
  server_name localhost 192.168.100.200;    "nginx Reverse proxy address "
  access_log /var/log/nginx/tang.cn-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For
    proxy_pass http://http_backend;
  }
}

#--------------------- Expansion is based on two upstream polling nginx and httpd----------------------
[root@docker vhost]# vim /root/consul/nginx.ctmpl 

upstream http_backend {
   {{range service "nginx"}}
    server {{.Address}}:{{.Port}};
     {{end}}
}

upstream http_httpd {
   {{range service "httpd"}}
    server {{.Address}}:{{.Port}};
     {{end}}
}

server {
  listen 1111;
  server_name localhost 192.168.179.121;
  access_log /var/log/nginx/cllt.cn-access.log;
upstream http_backend {
   {{range service "nginx"}}
    server {{.Address}}:{{.Port}};
     {{end}}
}

upstream http_httpd {
   {{range service "httpd"}}
    server {{.Address}}:{{.Port}};
     {{end}}
}

server {
  listen 1111;
  server_name localhost 192.168.179.121;
  access_log /var/log/nginx/cllt.cn-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
  }
}
server {
  listen 2222;
  server_name localhost 192.168.179.121;
  access_log /var/log/httpd/cllt.cn-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_httpd;
  }
}

版权声明
本文为[osc_o8ipcpa5]所创,转载请带上原文链接,感谢

Scroll to Top