docker-consul部署

目录

一、环境

二、consul服务器

三、registrator服务器

四、consul-template


一、环境

consul服务器            192.168.246.10        运行consul服务、nginx服务、consul-template守护进程
registrator服务器      192.168.246.11        运行registrator容器、运行nginx容器

二、consul服务器

1、建立consul服务

mkdir /opt/consul
cp /opt/consul_0.9.2_linux_amd64.zip /opt/consul
cd /opt/consul
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin/

docker-consul部署_第1张图片

2、设置代理,在后台启动 consul 服务端

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.246.10 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

netstat -natp | grep consul    #启动consul后默认会监听5个端口:
                               #8300:replication、leader farwarding的端口
                               #8301:lan cossip的端口
                               #8302:wan gossip的端口
                               #8500:web ui界面的端口
                               #8600:使用dns协议查看节点信息的端口

3、查看集群信息

3.1、查看members状态

consul members

3.2、查看集群状态

consul operator raft list-peers

4、通过 http api 获取集群信息

curl 127.0.0.1:8500/v1/status/peers 			#查看集群server成员
curl 127.0.0.1:8500/v1/status/leader			#集群 server-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			#集群节点详细信息

docker-consul部署_第2张图片

三、registrator服务器

1、安装 Gliderlabs/Registrator

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

docker-consul部署_第3张图片

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

docker-consul部署_第4张图片

这边 test04最后没有那个httpd,多打了

docker-consul部署_第5张图片

3、验证 http 和 nginx 服务是否注册到 consul
浏览器中,输入 http://192.168.246.10:8500,在 Web 页面中“单击 NODES”,然后单击“consurl-server01”,会出现 5 个服务。

docker-consul部署_第6张图片

 docker-consul部署_第7张图片

3.1、在consul服务器使用curl测试连接服务器

curl 127.0.0.1:8500/v1/catalog/services 

四、consul-template

1、准备 template nginx 模板文件,在consul服务器上操作

vim /opt/consul/nginx.ctmpl
#定义nginx upstream一个简单模板
upstream http_backend {
  {{range service "nginx"}}
   server {{.Address}}:{{.Port}};
   {{end}}
}
#定义一个server,监听8000端口,反向代理到upstream
server {
    listen 8000;
    server_name localhost 192.168.246.10;
    access_log /var/log/nginx/kgc.com-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;
    }
}

docker-consul部署_第8张图片

2、编译安装nginx

yum -y install pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
tar zxvf nginx-1.22.0.tar.gz -C /opt/
cd /opt/nginx-1.22.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make -j && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

3、配置 nginx

vim /usr/local/nginx/conf/nginx.conf
......
http {
     include       mime.types;
     include  vhost/*.conf;       				#添加虚拟主机目录
     default_type  application/octet-stream;
......

docker-consul部署_第9张图片

创建虚拟主机目录

mkdir /usr/local/nginx/conf/vhost

创建日志文件目录

mkdir /var/log/nginx

启动nginx

nginx

4、配置并启动 template

unzip consul-template_0.19.3_linux_amd64.zip -d /opt/
cd /opt/
mv consul-template /usr/local/bin/

 在前台启动 template 服务,启动后不要按 ctrl+c 中止 consul-template 进程。

consul-template --consul-addr 192.168.246.10:8500 \
--template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info

docker-consul部署_第10张图片

重新再开一个窗口,查看生成配置文件

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

docker-consul部署_第11张图片

 5、访问 template-nginx

docker ps -a
docker exec -it 8018c1586b68 bash
echo "this is test1 web" > /usr/share/nginx/html/index.html
docker exec -it 26c48d24b8cd bash
echo "this is test2 web" > /usr/share/nginx/html/index.html

docker-consul部署_第12张图片

docker-consul部署_第13张图片

浏览器访问:http://192.168.246.10:8000/,并不断刷新。

docker-consul部署_第14张图片

docker-consul部署_第15张图片

6. 增加一个 nginx 容器节点

6.1、增加一个 nginx 容器节点,测试服务发现及配置更新功能。

docker run -itd -p:85:80 --name test-06 -h test06 nginx

 观察 template 服务,会从模板更新/usr/local/nginx/conf/vhost/kgc.conf 文件内容,并且重载 nginx 服务。

6.2、查看/usr/local/nginx/conf/vhost/kgc.conf 文件内容

docker-consul部署_第16张图片

你可能感兴趣的:(docker,consul)