Docker--consule-Nginx群集负载均衡&harbor

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-cecurl -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-composedocker-compose -v#或者上传文件cp -p docker-compose /usr/local/bin#//就是一个工具,直接添加到/usr/local/bin/ 当成工具来用                   2.部署consulmkdir /root/consulcp consul_0.9.2_linux_amd64.zip /root/consulcd /root/consulunzip consul_0.9.2_linux_amd64.zipmv consul /usr/binconsul 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 membersconsul 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节点安装registratordocker 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:85002.测试服务发现功能是否正常docker run -itd -p:83:80 --name test-01 -h test01 nginxdocker run -itd -p:84:80 --name test-02 -h test02 nginxdocker run -itd -p:88:80 --name test-03 -h test03 httpddocker run -itd -p:89:80 --name test-04 -h test04 httpd3. 验证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-templateunzip consul-template_0.19.3_linux_amd64.zip cp consul-template /usr/local/bin5.准备template nginx 模板文件//在consul上操作vim /root/consul/nginx.ctmplupstream 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. 编译安装nginxyum install gcc pcre-devel zlib-devel -ytar zxvf nginx-1.12.0.tar.gz -C /opt[root@docker01 consul]# cd /opt[root@docker01 opt]# lscontainerd  nginx-1.12.0  rh[root@docker01 opt]# cd nginx-1.12.0/[root@docker01 nginx-1.12.0]# lsauto  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 install7. 配置nginx[root@docker01 nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.confhttp {    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.ziproot@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 83tcp        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 run2020/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-01docker logs -f test-02docker 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;  }}

来源:https://www.icode9.com/content-3-753801.html

(0)

相关推荐

  • CentOS下LVS负载均衡的简单实践

    LVS概念介绍可参考转载文章LVS 负载均衡原理及安装配置简明指南 下面结合如下拓扑图,简单实践一下LVS负载均衡的其中一种情形 环境准备如下: WebServer1:192.168.31.211 部 ...

  • 实现ASP.Net Core3.1运行在DockeDesktop下并用Nginx实现负载均衡

    一.首先去https://www.docker.com/products/docker-desktop下载Windows版本的Docker Desktop并安装(需要win10专业版以上操作系统,并启 ...

  • Centos7上配置nginx的负载均衡

    前言 在配置nginx负载均衡前.我们需要明白几个名词的概念 注: 如果不小心忘了tomcat和nginx的启动,关闭命令,可参考写在文章最后的命令 一 重要的概念理解 1 什么是nginx呢? Ng ...

  • Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

    这篇文章主要介绍了Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧下载Tomcat8镜像12345[root@l ...

  • Linux学习10-CentOS搭建nginx负载均衡环境

    前言 当自己的web网站访问的人越来越多,一台服务器无法满足现有的业务时,此时会想到多加几台服务器来实现负载均衡. 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,怎样将同一个域名的访问分散 ...

  • 前端技术分享:Nginx负载均衡视频,基础的实战应用

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.其特点是占有内存少,并发处理能力强,以高性能低资源消耗而闻名,国内 ...

  • Nginx负载均衡配置误区

    之前有很多朋友问关于Nginx的upstream模块中max_fails及fail_timeout,这两个指令,分别是配置关于负载均衡过程中,对于上游(后端)服务器的失败尝试次数和不可用时间,很多人不 ...

  • Nginx负载均衡算法

    负载均衡用来解决用户请求到来时如何选择 upstream server 进行处理,这里主要介绍几种负载均衡算法. 1.round-robin:轮询,默认负载均衡算法,即以轮询的方式将请求转发到上游服务 ...

  • 解析Nginx负载均衡

    摘要:对于一个大型网站来说,负载均衡是永恒的话题.随着硬件技术的迅猛发展,越来越多的负载均衡硬件设备涌现出来,如F5 BIG-IP.Citrix NetScaler.Radware等等,虽然可以解决问 ...

  • nginx负载均衡简单写法

    用nginx反向代理,把80端口的/a请求随机分到group1的站点,weight=1配置权重.