Docker-compose编排,consul自动发现和更新
一、Docker-compose部署nginx
环境部署所有主机安装docker-ce
(内容为docker基础)yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager —add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
sysctl -p
systemctl restart docker下载安装docker-compose
//下载compose(上传docker_compose)
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s-
uname -m` -o /usr/local/bin/docker-compose
cp -p docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose创建nginx的Dockerfile文件
REFERENCE[root@compute1 compose_nginx]# tree nginx/
nginx/
├── Dockerfile
└── nginx-1.12.2.tar.gz0 directories, 2 files
mkdir /root/compose_nginx
cd ~/compose.nginx
mkdidr nginx && cd nginx
vim Dockerfile
FROM centos:7
MAINTAINER XWP
RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /tmp/
WORKDIR /tmp/nginx-1.12.2/
RUN ./configure \
—prefix=/usr/local/nginx \
—user=nginx \
—group=nginx \
—with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
CMD [“nginx”,”-g”,”daemon off;”]编辑docker-compose.yml容器编排文件
vim /root/compose_nginx/docker-compose.yml
version: “3”
services:
nginx:hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 80:80
networks:
- cluster
volumes:
- ./html:/usr/local/nginx/html
networks:
cluster:编辑测试网页
mkdir /root/compose_nginx/html/
vim /root/compose_nginx/html/index.htmlthis is test web
启动容器
[root@consul compose_nginx]# docker-compose up -d
浏览器测试
二、docker-consul 集群搭建
环境:两台centos7
第一台consul server IP:192.168.100.101 安装软件包:Docker-ce、Compose 3 、Consul、Consul-template
第二台Registrator IP:192.168.100.100 安装软件包:需求的软件包:Docker-ce 、registrator
2.1 consul-server配置
安装consul
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/bin/建立consul服务
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consu-data \
-bind=192.168.100.101 \
-client=0.0.0.0 \
-node=consul-server1 &
查看集群信息
consul members
2.2 Registrator配置
#配置192.168.226.133后端节点
[root@localhost ~]# docker run -d \
> --name=registrator \ #下载registrator容器
> --net=host \ #使用host网络
> -v /var/run/docker.sock:/tmp/docker.sock \ #数据卷挂载(使用的是系统默认的)
> --restart=always \ #重启策略(遇到问题会重启)
> gliderlabs/registrator:latest \ #下载的仓库名称/镜像名称
> -ip=192.168.100.100 \ #指向本地服务器IP地址
> consul://192.168.100.100:8500 #指向注册中心的地址
创建两个nginx节点
docker run -itd -p
80 —name test1 -h test1 nginx
docker run -itd -p80 —name test2 -h test2 nginx
-name 给容器命名 -h 设置容器主机名
浏览器登录consul-server查看
可以看出,consul实现了自动发现节点的功能。
2.3 consul-template自动更新配置
consul-server准备模板文件
vim nginx.ctmpl
upstream http_backend {
{
{
range service "nginx"}}
server {
{
.Address}}:{
{
.Port}};
{
{
end}}
}
server {
listen 88;
server_name localhost 192.168.100.100;
access_log /var/log/nginx/contain_nginx.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;
}
}配置,安装template
unzip consul-template_0.19.3_linux_amd64.zip
mv consul-template /usr/bin/
consul-template -consul-addr 192.168.100.101:8500 -template “/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/test.conf:/usr/local/nginx/sbin/nginx -s reload” —log-level=info
- 测试结果
还没有评论,来说两句吧...