一、容器服务的更新与发现拓扑图:
1、架构组件的功能:
-
consul template:(自动生成nginx的配置文件nginx.conf)
-
consul server:服务发现、更新
-
consul agent:对接后面的节点
-
代码实现:
实验1:conslu
两个节点:1、做nginx反向代理+consul容器服务 2、nginx和httpd的业务容器节点
1、在监控服务器1上:14.0.0.10
将docker-compose包拖进来到~目录下:
chmod +x docker-compose
mv docker-compose /usr/local/bin/
mkdir consul
cd consul
将consul_0.9.2、consul-template的连个包拖进来。
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/local/bin/
consul agent \ '//设置代理'
-server \ '//服务功能'
-bootstrap \ '//参与选举'
-ui \ '//提供web界面'
-data-dir=/var/lib/consul-data \ '//提供一个代理存储数据目录'
-bind=14.0.0.10 \ '//绑定本地地址'
-client=0.0.0.0 \ '//面对的客户端地址'
-node=consul-server01 &> /var/log/consul.log & 功能都已开启
consul member 查看集群信息
consul info | grep leader 查看管理信息
curl 127.0.0.1:8500/v1/status/peers 查看集群server成员
curl 127.0.0.1:8500/v1/status/leaders 查看集群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 集群节点详细信息
在浏览器上输入“14.0.0.10:8500”即可查看网页界面 “注意需要关闭防火墙墙的安全机制!!!”
在nginx和httpd的业务容器节点上:14.0.0.11
docker run -d \
--name=registrator \ '//定义容器名称,对接nginx和consul'
--net=host \ '定义网络'
-v /var/run/docker.sock:/tmp/docker.sock \ '指定数据卷,存储信息'
--restart=always \
gliderlabs/registrator:latest \ '定义镜像'
-ip=14.0.0.11 \ '指定本地地址'
consul://14.0.0.10:8500
docker ps -a ‘nginx、httpd与consul成功对接’
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 85:80 --name test-03 -h test03 httpd
docker run -itd -p 86:80 --name test-04 -h test04 httpd 到监控机14.0.0.10:8500上观察已监控到业务容器!!
2、在监控服务器14.0.0.10上:
vim /root/consul/nginx.ctmpl
upstream http_backend {
{{range service "nginx"}}
server {{.Address}}:{{.Port}};
{{end}}
{{range service "httpd"}}
server {{.Address}}:{{.Port}};
{{end}}
}
server {
listen 88;
server_name localhost 14.0.0.10;
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;
}
}
部署nginx反向代理服务器:
cd /opt/
yum install gcc gcc-c++ make expat* pcre* perl* zlib* -y
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.2
./configure --prefix=/usr/local/nginx
make && make install
vim /usr/local/nginx/conf/nginx.conf 第19行添加
include vhost/*.conf;
mkdir /usr/local/nginx/conf/vhost/
mkdir /var/log/nginx
/usr/local/nginx/sbin/nginx 启动nginx反向代理服务
cd /root/consul/ 将consul-template的包拖进来!
unzip consul-template_0.19.3_linux_amd64.zip
mv /usr/local/bin/
consul-template -consul-addr 14.0.0.10:8500 \
-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info
docker logs -f test-01
docker logs -f test-02
docker logs -f test-03
docker logs -f test-04
在浏览器上访问:14.0.0.10:88 监控机上的nginx做反向代理88端口提供服务!! (如果访问不了就换一个端口号)
二、Harbor私库:
代码实现:
实验2:注意关闭防火墙机制
1、做私库站点服务器:14.0.0.13
2、客户端服务器:14.0.0.14
第一步:在私库服务服务器的节点上:
将docker-compose、harbor拖进来
chmod +x docker-compose
mv dokcer-compose /usr/local/bin/
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
cd /usr/local/harbor/
vim harbor.cfg 第5行修改
hostname = 14.0.0.13(本机地址)
sh install.sh 安装harbor
到浏览器上访问:14.0.0.13,登录harbor系统
用户名:admin
密码:Harbor12345
本地登录:docker login -u admin -p Harbor12345 http://127.0.0.1
从官网下载镜像上传到自创的私库里面: 1、下载镜像 2、打标签 3、上传动作 “到浏览器上查看是否上传成功?”
现在浏览器上创建kgc的项目组,才能上传!!!!
docker pull nginx
docker tag nginx:latest 127.0.0.1/kgc/nginx:v1
docker push 127.0.0.1/kgc/nginx
第二步:在客户机服务器的节点上:
vim /usr/lib/systemd/system/docker.service 第14行添加 为了避免https安全机制的干扰
fd:// --insecure-registry 14.0.0.13 --containerd
systemctl daemon-reload
systemctl restart docker
docker login -u admin -p Harbor12345 http://14.0.0.13
docker tag centos:7 14.0.0.13/kgc/centos7:v1 打标签并上传镜像!!
docker push 14.0.0.13/kgc/centos7