我是靠谱客的博主 个性墨镜,最近开发中收集的这篇文章主要介绍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

创建挂载目录:

[root@sunqiuming-4 ~]# mkdir /nfs

[root@sunqiuming-4 ~]# systemctl start nfs

  1. 部署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

 

  1. 搭建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地址:

 

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

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

 

  1. 安装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反向带理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部