Docker案例之自动部署负载均衡consul+compose+template和私有仓库harbor
文章目录
自动部署负载均衡consul+compose+template和私有仓库harbor
一、案例
1、consul+compose+template(自动部署和负载均衡)
2、harbor(私有仓库)
二、实验步骤
实验1、consul+compose+template(自动部署和负载均衡)
1、实验准备
主机1,服务端,地址为:192.168.150.173
主机2,客户端,地址为:192.168.150.173
两台主机都采用仅主机模式,安装docker及优化完成
2、consul服务安装(服务端)
cd /opt
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.150.173
-client=0.0.0.0
-node=consul-server01 &> /var/log/consul.log &
consul members ##查看集群信息
consul info | grep leader ##查看结点信息
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/catalog/nginx //查看nginx服务信息
curl 127.0.0.1:8500/v1/catalog/nodes //集群节点详细信息
3、容器服务自动加入nginx集群(客户端)
docker run -d
–name=registrator
–net=host
-v /var/run/docker.sock:/tmp/docker.sock
–restart=always
gliderlabs/registrator:latest
-ip=192.168.150.174
consul://192.168.150.173:8500
//测试服务发现功能是否正常
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
4、验证http和nginx服务是否注册到consul
浏览器输入:http://192.168.150.173:8500
5、consul服务器上查看服务(服务端)
curl 127.0.0.1:8500/v1/catalog/services
6、准备template nginx模板文件(服务端)
vim /root/consul/nginx.ctmpl ##文件内容如下所示
upstream http_backend {
{{range service “nginx”}}
server {{.Address}}:{{.Port}};
{{end}}
}
server {
listen 83;
server_name localhost 192.168.150.173;
access_log /var/log/nginx/kgc.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;
}
}
7、编译安装nginx(服务端)
yum install gcc pcre-devel zlib-devel -y
cd /opt
tar zxvf nginx-1.12.0.tar.gz
make && make install
8、配置nginx(服务端)
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
include vhost/*.conf; //添加虚拟主机目录
default_type application/octet-stream;
mkdir /usr/local/nginx/conf/vhost ##创建虚拟主机目录
mkdir /var/log/nginx ##创建日志文件目录
/usr/local/nginx/sbin/nginx ##启动nginx
9、配置并启动template(服务端)
上传consul-template_0.19.3_linux_amd64.zip包上传到/opt
cd /opt
unzip consul-template_0.19.3_linux_amd64.zip
mv consul-template /usr/bin/
consul-template -consul-addr 192.168.150.173:8500
-template “/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload”
–log-level=info
10、查看配置文件(服务端)
重启打开一个终端查看
cd /usr/local/nginx/conf/vhost
vim kgc.conf
11、增加一个nginx容器节点(客户端)
docker run -itd -p:85:80 --name test-05 -h test05 nginx
12、查看三台nginx容器日志(客户端)
//请求正常轮询到各个容器节点上
docker logs -f test-01
docker logs -f test-02
docker logs -f test-05
实验2、harbor私有仓库
最近公司又提出一个新需求,将项目全部打包成镜像部署私有仓库服务,经过几轮商讨,最终选择Docker Harbor
Docker Harbor有可视化的Web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能
1、实验准备
主机1,服务端,地址为:192.168.150.173
主机2,客户端,地址为:192.168.150.173
两台主机都采用仅主机模式,安装docker及优化完成
2、查看Docker-Compose版本(服务端)
cd /opt
cp docker-compose /usr/local/bin/
docker-compose -v ##查看版本信息
3、部署Harbor服务(服务端)
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz ##下载较慢,采用已经下载好的包
cd /opt
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
vim /usr/local/harbor/harbor.cfg
hostname=192.168.150.173 ##第5行,修改内容,修改为服务端地址
sh /usr/local/harbor/install.sh ##启动harbor
docker images ##查看镜像
docker ps -a ##查看容器
打开浏览器访问:http://192.168.150.173,查看管理页面,默认使用管理员用户名和密码访问
admin/Harbor12345
docker login -u admin -p Harbor12345 http://127.0.0.1 //本地登录
docker pull nginx //下载
docker tag nginx:latest 127.0.0.1/kgc/nginx:v1 //镜像打标签
docker push 127.0.0.1/kgc/nginx:v1 //上传镜像到Harbor
4、远程连接(客户端)
iptables -F
setenforce 0
vim /usr/ib/systemd/system/docker.service ##黑色为修改内容
ExecStart=/usr/bin/dockerd -H fd:// –insecure-registry=195.128.150.173 --containerd=/run/containerd/containerd.sock
systemctl daemon-reload
systemctl restart docker
docker login -u admin -p Harbor12345 http://192.168.150.173
docker pull centos:7
docker images ##在浏览器上创建项目名称为kgc
docker tag centos:7 192.168.150.173/kgc/centos7:v1
docker images
docker push 192.168.150.173/kgc/centos7 ##上传
5、服务器下载(服务端)
docker pull 127.0.0.1/kgc/centos7:v1 ##下载
6、重启harbor(服务端)
cd /usr/local/harbor/ ##目录跳转
docker-compose up -d ##重启私库
docker-compose down -v ##移除Harbor服务容器同时保留镜像数据/数据库
问题解决
问题1、harbor远程连接不成功
[[email protected] client ~]# docker login -u admin -P Harbor12345 http://192.168.195.128
WARNING! Using -password via the CLI is insecure. Use -password-stdin.
Error response from daemon: Get https://192.168. 195.128/v2/: EOF
解决:
[[email protected] ~]# vim /usr/ib/systemd/system/docker.service ##黑色为修改内容
ExecStart=/usr/bin/dockerd -H fd:// –insecure-registry=195.128.150.173 --containerd=/run/containerd/containerd.sock
systemctl daemon-reload
systemctl restart docker
docker login -u admin -P Harbor12345 http://192.168.195.128
远程登录成功
问题2、harbor重启报错
//报错:
docker-compose up -d
Creating network “harbor_ harbor” with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:
(iptables failed: iptables
-wait -t nat -1 DOCKER -i br-25094fc09b3c -j RETURN: iptables: No chain/target/match by that
name.
(exit status 1))
//解决:关闭防火墙后,docker 需要重启
systemctl restart docker
docker-compose up -d
Creating network “harbor_ harbor” with the default driver
Creatine harbor-loe … done.