项目环境:

Docker------部署keepalived高可用&nginx反向带理

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:

  1. 搭建nfs服务器:(单台nfs

Docker------部署keepalived高可用&nginx反向带理

Docker------部署keepalived高可用&nginx反向带理

创建挂载目录:

[[email protected] ~]# mkdir /nfs

[[email protected] ~]# systemctl start nfs

Docker------部署keepalived高可用&nginx反向带理

  1. 部署docker服务器上的nginx

nginx01:

[[email protected] ~]# docker pull nginx   ##下载nginx镜像

创建挂载目录:

[[email protected] ~]# mkdir html

挂载nfs并创建网页文件:

[[email protected] ~]# mount  192.168.1.50:/nfs html/

[[email protected] ~]# echo "welcome to nginx web" > html/index.html

[[email protected] ~]# cat html/index.html

welcome to nginx web

 

为了解决容器固定ip地址,首先自定义一个网络:

[[email protected] ~]# docker network  create -d  bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 my_net1

 

创建一个volume container:

[[email protected] ~]# docker create --name vc_data -v /root/html:/usr/share/nginx/html busybox

 

运行nginx容器:

[[email protected] ~]# docker run -d --name nginx1 -p 80:80 --volumes-from  vc_data  --network my_net1 --ip 172.16.10.10 nginx:latest

 

nginx02:

挂载nfs:

[[email protected] ~]# mkdir html

[[email protected] ~]# mount 192.168.1.50:/nfs html/

[[email protected] ~]# cat  html/index.html

welcome to nginx web

 

[[email protected] ~]# docker network  create -d bridge --subnet  172.16.10.0/24 --gateway 172.16.10.1 my_net1

 

[[email protected] ~]# docker create --name vc_data2 -v /root/html:/usr/share/nginx/html busybox

 

运行nginx容器:

[[email protected] ~]# docker run -d --name nginx2 -p 80:80 --volumes-from vc_data2 --network my_net1 --ip 172.16.10.20 nginx:latest

 

测试访问网页:

[[email protected] ~]# curl 127.0.0.1

welcome to nginx web

 

  1. 搭建keepalived

主:

###安装keepalived:

[[email protected] ~]# yum -y install keepalived

##修改keepalived配置文件:

[[email protected] ~]# vim /etc/keepalived/keepalived.conf

需要修改的地方:

 

Docker------部署keepalived高可用&nginx反向带理

其余的需要删掉,因为我们现在的环境没有邮箱和域名等条件,为了不影响测试,删掉。

[[email protected] ~]# systemctl restart keepalived.service

 

从keepalived:

修改配置文件如下:

Docker------部署keepalived高可用&nginx反向带理

 

[[email protected] ~]# systemctl restart keepalived.service

 

在主keepalived上查看是否有vip地址:

Docker------部署keepalived高可用&nginx反向带理

 

  1. keepalived上搭建nginxdocker上运行nginx服务的反向代理:

keepalived和从keepalived操作相同(两台都要部署)

 

  1. 安装nginx:

[[email protected] ~]# groupadd nginx

[[email protected] ~]# useradd nginx -g nginx  -s /sbin/nologin

[[email protected] ~]# yum -y install pcre-devel openssl-devel zlib-devel

[[email protected] ~]# tar zxf nginx-1.14.0.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/nginx-1.14.0/

 

[[email protected] 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

[[email protected] nginx-1.14.0]# make && make install

#软连接:

[[email protected] nginx-1.14.0]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin/

修改nginx配置文件:

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

在http配置项中添加:

Docker------部署keepalived高可用&nginx反向带理

Docker------部署keepalived高可用&nginx反向带理

因为在docker上,已经将容器中的80端口映射到了本地,所以指向的是docker宿主机的ip地址。

 

启动nginx服务:

[[email protected] ~]# mkdir -p /var/tmp/nginx/client

[[email protected] ~]# chown -R nginx /var/tmp/nginx/client/

[[email protected] ~]# nginx

Docker------部署keepalived高可用&nginx反向带理

 

 

 

客户端访问docker上运行的nginx:

访问的是keepalived的vip地址:

http://192.168.1.88/

Docker------部署keepalived高可用&nginx反向带理

 

验证keepalived高可用:

[[email protected] ~]# systemctl  stop keepalived.service  ##将主的keepalived服务停掉

//可以看到vip地址已经漂移到了从keepalived上

Docker------部署keepalived高可用&nginx反向带理

 

验证网页依旧能够访问:http://192.168.1.88/

Docker------部署keepalived高可用&nginx反向带理

5)数据迁移:

将docker01上的数据迁移到新的docker主机上:

编写dockerfile:

[email protected] ~]# vim Dockerfile

FROM busybox:latest

ADD html /usr/share/nginx/html

VOLUME /usr/share/nginx/html

 

Docker------部署keepalived高可用&nginx反向带理

Docker------部署keepalived高可用&nginx反向带理

 

将构建完生成镜像导出:

[[email protected] ~]# docker save --output  data.tar datapacked

拷贝到新的docker主机上:

[[email protected] ~]# scp data.tar  [email protected]:/root

 

docker主机( 192.168.1.99):

导入镜像:

[[email protected] ~]# scp data.tar  [email protected]:/root

创建volume container:

[[email protected] ~]# docker create --name net_data datapacked

基于该容器卷,运行一个nginx:

[[email protected] ~]# docker run -d --name nginx3 -p 80:80 --volumes-from net_data nginx

Docker------部署keepalived高可用&nginx反向带理

访问网页(迁移过来的网页)

[[email protected] ~]# curl 127.0.0.1

welcome to nginx web

Docker------部署keepalived高可用&nginx反向带理

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-04
  • 2021-05-25
  • 2021-08-30
  • 2021-07-22
  • 2022-12-23
猜你喜欢
  • 2021-12-15
  • 2021-07-02
  • 2021-08-26
  • 2021-09-23
  • 2023-03-09
  • 2022-12-23
  • 2020-04-07
相关资源
相似解决方案