概述
项目环境:
keepalived主:192.168.1.10
keepalived从:192.168.1.20
VIP:192.168.1.88
docker-nginx01:192.168.1.30
docker-nginx02:192.168.1.40
nfs:192.168.1.50
docker(迁移):192.168.1.99
项目实施:
为了方便测试,关闭各台的防火墙以及禁用selinux:
- 搭建nfs服务器:(单台nfs)
创建挂载目录:
[root@sunqiuming-4 ~]# mkdir /nfs
[root@sunqiuming-4 ~]# systemctl start nfs
- 部署docker服务器上的nginx:
nginx01:
[root@sqm-docker01 ~]# docker pull nginx ##下载nginx镜像
创建挂载目录:
[root@sqm-docker01 ~]# mkdir html
挂载nfs并创建网页文件:
[root@sqm-docker01 ~]# mount 192.168.1.50:/nfs html/
[root@sqm-docker01 ~]# echo "welcome to nginx web" > html/index.html
[root@sqm-docker01 ~]# cat html/index.html
welcome to nginx web
为了解决容器固定ip地址,首先自定义一个网络:
[root@sqm-docker01 ~]# docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 my_net1
创建一个volume container:
[root@sqm-docker01 ~]# docker create --name vc_data -v /root/html:/usr/share/nginx/html busybox
运行nginx容器:
[root@sqm-docker01 ~]# docker run -d --name nginx1 -p 80:80 --volumes-from vc_data --network my_net1 --ip 172.16.10.10 nginx:latest
nginx02:
挂载nfs:
[root@sqm-docker02 ~]# mkdir html
[root@sqm-docker02 ~]# mount 192.168.1.50:/nfs html/
[root@sqm-docker02 ~]# cat html/index.html
welcome to nginx web
[root@sqm-docker02 ~]# docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 my_net1
[root@sqm-docker02 ~]# docker create --name vc_data2 -v /root/html:/usr/share/nginx/html busybox
运行nginx容器:
[root@sqm-docker02 ~]# docker run -d --name nginx2 -p 80:80 --volumes-from vc_data2 --network my_net1 --ip 172.16.10.20 nginx:latest
测试访问网页:
[root@sqm-docker02 ~]# curl 127.0.0.1
welcome to nginx web
- 搭建keepalived:
主:
###安装keepalived:
[root@sunqiuming-1 ~]# yum -y install keepalived
##修改keepalived配置文件:
[root@sunqiuming-1 ~]# vim /etc/keepalived/keepalived.conf
需要修改的地方:
其余的需要删掉,因为我们现在的环境没有邮箱和域名等条件,为了不影响测试,删掉。
[root@sunqiuming-1 ~]# systemctl restart keepalived.service
从keepalived:
修改配置文件如下:
[root@sunqiuming-2 ~]# systemctl restart keepalived.service
在主keepalived上查看是否有vip地址:
- 在keepalived上搭建nginx做docker上运行nginx服务的反向代理:
主keepalived和从keepalived操作相同(两台都要部署)
- 安装nginx:
[root@sunqiuming-1 ~]# groupadd nginx
[root@sunqiuming-1 ~]# useradd nginx -g nginx -s /sbin/nologin
[root@sunqiuming-1 ~]# yum -y install pcre-devel openssl-devel zlib-devel
[root@sunqiuming-1 ~]# tar zxf nginx-1.14.0.tar.gz -C /usr/src/
[root@sunqiuming-1 ~]# cd /usr/src/nginx-1.14.0/
[root@sunqiuming-1 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --with-pcre --with-http_flv_module
[root@sunqiuming-1 nginx-1.14.0]# make && make install
#软连接:
[root@sunqiuming-1 nginx-1.14.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
修改nginx配置文件:
[root@sunqiuming-1 ~]# vim /usr/local/nginx/conf/nginx.conf
在http配置项中添加:
因为在docker上,已经将容器中的80端口映射到了本地,所以指向的是docker宿主机的ip地址。
启动nginx服务:
[root@sunqiuming-1 ~]# mkdir -p /var/tmp/nginx/client
[root@sunqiuming-1 ~]# chown -R nginx /var/tmp/nginx/client/
[root@sunqiuming-1 ~]# nginx
客户端访问docker上运行的nginx:
访问的是keepalived的vip地址:
http://192.168.1.88/
验证keepalived高可用:
[root@sunqiuming-1 ~]# systemctl stop keepalived.service ##将主的keepalived服务停掉
//可以看到vip地址已经漂移到了从keepalived上
验证网页依旧能够访问:http://192.168.1.88/
(5)数据迁移:
将docker01上的数据迁移到新的docker主机上:
编写dockerfile:
root@sqm-docker01 ~]# vim Dockerfile
FROM busybox:latest
ADD html /usr/share/nginx/html
VOLUME /usr/share/nginx/html
将构建完生成镜像导出:
[root@sqm-docker01 ~]# docker save --output data.tar datapacked
拷贝到新的docker主机上:
[root@sqm-docker01 ~]# scp data.tar root@192.168.1.99:/root
docker主机( 192.168.1.99):
导入镜像:
[root@sqm-docker01 ~]# scp data.tar root@192.168.1.99:/root
创建volume container:
[root@sqm-docker03 ~]# docker create --name net_data datapacked
基于该容器卷,运行一个nginx:
[root@sqm-docker03 ~]# docker run -d --name nginx3 -p 80:80 --volumes-from net_data nginx
访问网页(迁移过来的网页)
[root@sqm-docker03 ~]# curl 127.0.0.1
welcome to nginx web
最后
以上就是个性墨镜为你收集整理的Docker------部署keepalived高可用&nginx反向带理的全部内容,希望文章能够帮你解决Docker------部署keepalived高可用&nginx反向带理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复