Docker案例之自动部署负载均衡consul+compose+template和私有仓库harbor

自动部署负载均衡consul+compose+template和私有仓库harbor

一、案例

mark

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

mark

5、consul服务器上查看服务(服务端)

curl 127.0.0.1:8500/v1/catalog/services

mark

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

mark

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远程连接不成功

[root@ 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

解决:
[root@client ~]# vim /usr/ib/systemd/system/docker.service ##黑色为修改内容

ExecStart=/usr/bin/dockerd -H fd:// –insecure-registry=195.128.150.173 --containerd=/run/containerd/containerd.sock

mark

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值