Docker--consule-Nginx群集负载均衡&harbor
2020-11-09 23:41
2131 查看
Docker--consule-Nginx群集负载均衡&harbor
Docker--consule-Nginx群集负载均衡&harbor #Consule 部署 服务器: 192.168.100.200 主机名docker01 consule服务节点 Docker-ce,Compose,Consul-template 服务器: 192.168.100.190 主机名docker02 web 服务节点 Docker-ce,registrator #------------------------------Consule 服务器 1.部署Docker-Compose环境 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 '//在Linux上我们可以从GitHub上下载它的二进制包来使用,此命令是下载Docker Compose的当前稳定版本' chmod +x /usr/local/bin/docker-compose docker-compose -v #或者上传文件 cp -p docker-compose /usr/local/bin #//就是一个工具,直接添加到/usr/local/bin/ 当成工具来用 2.部署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 & //查看群集状态 consul members consul info | grep leader //通过httpd 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/catlog/nginx "查看nginx服务信息" ------------------------Web容器服务通过registrator自动加入群集------------ 0.docker-ce环境 1.web节点安装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 \ "指的是web节点服务器地址" consul://192.168.100.200:8500 "指的是consul服务器地址" //浏览器访问 192.168.100.200:8500 2.测试服务发现功能是否正常 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. 验证httpd 和nginx 服务器是否注册到consul 输入 http://192.168.100.200:9500 点击nodes 点击 consul-server01 会出现5个服务 //在consul服务器上查看服务 [root@docker01 ~]# curl 127.0.0.1:8500/v1/catalog/services {"consul":[],"httpd":[],"nginx":[]}[root@docker01 ~]# #--------------------------------Consule 服务器 4.consul服务器安装consul-template unzip consul-template_0.19.3_linux_amd64.zip cp consul-template /usr/local/bin 5.准备template nginx 模板文件 //在consul上操作 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. 编译安装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. 配置nginx [root@docker01 nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf http { include mime.types; include vhost/*.conf; "添加子配置文件" default_type application/octet-stream; ...... } //创建虚拟主机目录 [root@docker01 nginx-1.12.0]# mkdir /usr/local/nginx/conf/vhost //创建日志文件目录 [root@docker01 nginx-1.12.0]# mkdir /var/log/nginx //启动nginx [root@docker01 nginx-1.12.0]# /usr/local/nginx/sbin/nginx 8.配置并启动template //上传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 "启动并利用模板生成ngonx的子配置文件" [root@docker01 ~]# netstat -ntap |grep 83 tcp 0 0 0.0.0.0:83 0.0.0.0:* LISTEN 94743/nginx //另外打开一个终端查看生成配置文件 [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. 增加一个nginx容器节点,测试服务发现及配置更新功能 //在registrator 服务端添加容器,注册 docker run -itd -p:85:80 --name test-05 -h test05 nginx //在consul服务端监控会有自动更新 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 //查看三台Nginx 日志,请求正常轮询到各个容器节点 docker logs -f test-01 docker logs -f test-02 docker logs -f test-05 [root@docker01 vhost]# cat tang.conf //查看自动生成的子配置文件 upstream http_backend { server 192.168.100.190:83; "反向代理后端节点" server 192.168.100.190:84; server 192.168.100.190:85; } server { listen 83; server_name localhost 192.168.100.200; "nginx反向代理服务器地址" 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; } } #---------------------拓展基于两个upstream轮询nginx和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; } }
相关文章推荐
- Docker-compose 编排
- docker compose部署
- Dockerfile 撰写
- Dockerfile 创建
- Docker安装优化与Docker基础命令
- Docker安装RabbitMQ
- Docker学习—DockerFile
- Docker知识进阶与容器编排技术
- Ubuntu 20.04 Docker 安装并配置
- Docker Dockerfile
- Docker思维导图汇总
- 基于Docker的Mysql主从复制搭建
- 【Azure DevOps系列】Azure DevOps使用Docker将.NET应用程序部署在云服务器
- 记一次k8s修改docker存储路径引发的问题
- 10 个冷门但又非常实用的 Docker 使用技巧
- docker私有仓库链接信任log日志清除
- 【Azure DevOps系列】如何在Azure DevOps上构建Docker镜像(一)
- SpringBoot打包成Docker镜像
- Ubuntu16.04 Server版的docker离线及nvidia-docker安装
- CentOS 安装 Docker 报错及解决过程