搭建双机热备并迁移docker

                搭建双机热备并迁移docker

实验要求:

1)两台keepalined做负载均衡,让在keepalined上面做nginx的反向代理服务。

2)一台NFS服务器提供nginx的页面

3)两台docker上面做nginx,并且页面必须是NFS上面的页面。

4)最后将docker上面的nginx迁移到另一台主机上面。

使用拓扑图:

搭建双机热备并迁移docker_第1张图片

实验环境:

实验环境:

主机名:

主机IP

使用系统:

keepalined1

192.168.2.4

vip地址:192.168.2.88

Linux

keepalined2

192.168.2.5

vip地址:192.168.2.88

Linux

NFS1

192.168.2.6

Linux

docker1

192.168.2.7

基于Linux安装的docker

docker2

192.168.2.8

基于Linux安装的docker

qianyi

192.168.2.9

基于Linux安装的docker

在192.168.2.4上面搭建keepalined和nginx反向代理

下载keepalined服务

[root@keepalined1 ~]# yum -y install keepalived ipvsadm

搭建双机热备并迁移docker_第2张图片

修改主配置文件并添加vip地址

[root@keepalined1 ~]# vim /etc/keepalived/keepalived.conf

 ! Configuration File for keepalived

 

global_defs {

     router_id keep01 //本地名称,一个服务器一个

   }

vrrp_instance VI_1 { //组名称,一个组内相同

    state MASTER     //热备状态

    interface ens33 //承载VIP地址的网卡

    virtual_router_id 51 //虚拟路由器的ID号,每个组保持一致

    priority 100     //优先级

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.2.88 //漂移IP地址(VIP)

    }

}

重启服务

[root@keepalined1 keepalived]# systemctl restart keepalived.service

查看vip的地址

[root@keepalived1 ~]# ip addr show ens33

搭建双机热备并迁移docker_第3张图片

下载nginx软件包

搭建双机热备并迁移docker_第4张图片

解决依赖、解压并安装nginx。

[root@keepalived1 ~]# yum -y install  openssl-devel  pcre-devel zlib-devel gcc gcc*

[root@keepalived1 ~]# mkdir -p /var/tmp/nginx/client

[root@keepalived1 ~]# chmod -R 777 /var/tmp/nginx/

[root@keepalived1 ~]# useradd -M -s /sbin/nologin nginx

[root@keepalived1 ~]# tar zxf ngx_cache_purge-2.3.tar.gz

[root@keepalived1 ~]# unzip nginx-sticky-module.zip

[root@keepalived1 ~]# tar zxf nginx-1.14.2.tar.gz

[root@keepalived1 ~]# cd nginx-1.14.2/

[root@keepalived1 nginx-1.14.2]# ./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  --add-module=../ngx_cache_purge-2.3 --with-http_flv_module --add-module=../nginx-sticky-module

[root@keepalived1 nginx-1.14.2]# make && make install

[root@keepalived1 nginx-1.14.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@keepalived1 nginx-1.14.2]# nginx

修改nginx配置文件,支持反向代理、

[root@keepalived1 nginx-1.14.2]# cd

[root@keepalived1 ~]# vim /usr/local/nginx/conf/nginx.conf

修改内容如下:

http {

    include       mime.types;

    default_type  application/octet-stream;

 

        upstream backend {

                 server 192.168.2.7 weight=1 max_fails=2 fail_timeout=10s;

                 server 192.168.2.8 weight=1 max_fails=2 fail_timeout=10s;

                 sticky;

         }

location / {

         root   html;

     #       index  index.html index.htm;

                proxy_pass http://backend;

       }

搭建双机热备并迁移docker_第5张图片

再次重启nginx服务,使其nginx反向代理生效

[root@keepalived1 ~]# nginx -t

[root@keepalived1 ~]# nginx -s reload

搭建双机热备并迁移docker_第6张图片

在 192.168.2.5上面搭建从服务,和nginx反向代理。

下载 keepalived

[root@keepalined2 ~]# yum -y install keepalived ipvsadm

搭建双机热备并迁移docker_第7张图片

修改配置文件

[root@keepalined2 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

     route_id keep02

   }

 

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    virtual_router_id 51

    priority 10

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.2.88

    }

}

重启服务

[root@keepalived2 ~]# systemctl restart keepalived.service

下载nginx所支持的软件包。

搭建双机热备并迁移docker_第8张图片

解决依赖,并安装nginx

[root@keepalived2 ~]# yum -y install  openssl-devel  pcre-devel zlib-devel gcc gcc*

[root@keepalived2 ~]# mkdir -p /var/tmp/nginx/client

[root@keepalived2 ~]# chmod -R 777 /var/tmp/nginx/

[root@keepalived2 ~]# useradd -M -s /sbin/nologin nginx

[root@keepalived2 ~]# tar zxf ngx_cache_purge-2.3.tar.gz

[root@keepalived2 ~]# unzip nginx-sticky-module.zip

[root@keepalived2 ~]# tar zxf nginx-1.14.2.tar.gz

[root@keepalived2 ~]# cd nginx-1.14.2/

[root@keepalived2 nginx-1.14.2]# ./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  --add-module=../ngx_cache_purge-2.3 --with-http_flv_module --add-module=../nginx-sticky-module

[root@keepalived2 nginx-1.14.2]# make && make install

[root@keepalived2 nginx-1.14.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@keepalived2 nginx-1.14.2]# nginx

修改nginx配置文件,使其支持nginx反向代理、

[root@keepalived2 nginx-1.14.2]# cd

[root@keepalived2 ~]# vim /usr/local/nginx/conf/nginx.conf

修改内容如下:

http {

    include       mime.types;

    default_type  application/octet-stream;

 

        upstream backend {

                 server 192.168.2.7 weight=1 max_fails=2 fail_timeout=10s;

                 server 192.168.2.8 weight=1 max_fails=2 fail_timeout=10s;

                 sticky;

         }

location / {

         root   html;

     #       index  index.html index.htm;

                proxy_pass http://backend;

       }

搭建双机热备并迁移docker_第9张图片

重启nginx服务,使其支持nginx反向代理。

[root@keepalived2 ~]# nginx -t

[root@keepalived2 ~]# nginx -s reload

搭建双机热备并迁移docker_第10张图片

在192.168.2.6上面做NFS服务

下载NFS

[root@nfs ~]# yum -y install nfs-utils rpcbind

搭建双机热备并迁移docker_第11张图片

设置共享服务

[root@nfs ~]# mkdir -p /opt/wwwroot

[root@nfs ~]# echo "this is nginx" > /opt/wwwroot/index.html

[root@nfs ~]# cat /opt/wwwroot/index.html

this is nginx

[root@nfs ~]# vim /etc/exports

/opt/wwwroot 192.168.2.0/24 (rw,sync,no_root_squash)

启动NFS服务并加入开机自启

[root@nfs ~]# systemctl start rpcbind

[root@nfs ~]# systemctl start nfs

[root@nfs ~]# systemctl enable nfs

[root@nfs ~]# systemctl enable rpc-rquotad

[root@nfs ~]# netstat -anpt | grep rpc

搭建双机热备并迁移docker_第12张图片

搭建双机热备并迁移docker_第13张图片

查看提供共享的目录

[root@nfs ~]# showmount -e

在192.168.2.7上面挂载NFS和安装nginx

下载NFS的客户端、开启并加入开机自启

[root@docker1 ~]# yum -y install nfs-utils rpcbind

[root@docker1 ~]# yum -y install nfs-utils

[root@docker1 ~]# systemctl enable rpcbind

[root@docker1 ~]# systemctl start rpcbind

查看是否能连接到NFS服务器上面

[root@docker1 ~]# showmount -e 192.168.2.6

创建需要挂载的目录

[root@docker1 ~]# mkdir -p /var/www/html

将创建的目录自动挂载到NFS目录。

[root@docker1 ~]# vim /etc/fstab

192.168.2.6:/opt/wwwroot /var/www/html/          nfs    defaults,_netdev 0 0

搭建双机热备并迁移docker_第14张图片

启用挂载

[root@docker1 ~]# mount -a

[root@docker1 ~]# tail -1 /etc/mtab

下载nginx镜像

[root@docker1 ~]# docker pull nginx

[root@docker1 ~]# docker images

搭建双机热备并迁移docker_第15张图片

基于nginx镜像运行一个容器,并挂载到NFS的目录、映射到本地80端口。

[root@docker1 ~]# docker run -itd --name nginx -p 80:80 -v /var/www/html/:/usr/share/nginx/html/ nginx

在浏览器访问一下nginx的网页查看是否是NFS上面的页面。

http://192.168.2.7/

搭建双机热备并迁移docker_第16张图片

在浏览器上面使用Vip地址是否能访问nginx的页面

http://192.168.2.88/

搭建双机热备并迁移docker_第17张图片

在192.168.2.8上面挂载NFS和安装nginx

下载NFS的客户端、开启并加入开机自启

[root@docker2 ~]# yum -y install nfs-utils rpcbind

[root@docker2 ~]# yum -y install nfs-utils

[root@docker2 ~]# systemctl enable rpcbind

[root@docker2 ~]# systemctl start rpcbind

查看是否能连接到NFS服务器上面

[root@docker2 ~]# showmount -e 192.168.2.6

创建需要挂载的目录

[root@docker2 ~]# mkdir -p /var/www/html

将创建的目录自动挂载到NFS目录。

[root@docker2 ~]# vim /etc/fstab

192.168.2.6:/opt/wwwroot /var/www/html/       nfs     defaults,_netdev 0 0

启用挂载

[root@docker2 ~]# mount -a

[root@docker2 ~]# tail -1 /etc/mtab

从docker hub上面下载nginx的镜像

[root@docker2 ~]# docker pull nginx

[root@docker2 ~]# docker images

搭建双机热备并迁移docker_第18张图片

基于nginx镜像运行一个容器,并且挂载到NFS目录、映射到本地80端口

[root@docker2 ~]# docker run -itd --name nginx -p 80:80 -v /var/www/html/:/usr/share/nginx/html/ nginx

使用浏览器访问查看是否是NFS上面的网页

http://192.168.2.8/

搭建双机热备并迁移docker_第19张图片

使用vip地址查看也能访问呢

http://192.168.2.88/

搭建双机热备并迁移docker_第20张图片

在192.168.2.9上面数据迁移

在192168.2.8上面编写Dockerfile文件

[root@docker2 ~]# cd /var/www/html/

[root@docker2 html]# vim Dockerfile

内容如下:

FROM busybox:latest          //基于这个镜像构建

ADD html /usr/share/nginx/html //将html拷贝到 /usr/share/nginx/html

VOLUME /usr/share/nginx/html    //容器中数据卷的路径

创建镜像

[root@docker2 www]# docker build -t datapacked .

[root@docker2 www]# docker images

搭建双机热备并迁移docker_第21张图片

搭建双机热备并迁移docker_第22张图片

创建一个容器当数据卷

[root@docker2 www]# docker create --name vc_data01 datapacked

基于数据卷运行一个容器,并指定端口

[root@docker2 www]# docker run -itd --name my-nginx -p 81:80 --volumes-from vc_data01 nginx

访问一下是否是原网页

[root@docker2 www]# curl 127.0.0.1:81

my-nginx容器制作成镜像

[root@docker2 www]# cd

[root@docker2 ~]# docker commit my-nginx my-nginx:v1.0

[root@docker2 ~]# docker images

搭建双机热备并迁移docker_第23张图片

再将镜像制作成tar包并传给192.168.2.9的迁移主机上。

[root@docker2 ~]# docker save > my-nginx.tar my-nginx:v1.0

[root@docker2 ~]# ls

[root@docker2 ~]# scp my-nginx.tar [email protected]:/root/

搭建双机热备并迁移docker_第24张图片

再次将datapacked 这个挂载数据镜像制作成tar 传输给192.168.2.9的迁移主机上、

[root@docker2 ~]# docker save > datapacked.tar datapacked

[root@docker2 ~]# ls

[root@docker2 ~]# scp datapacked.tar [email protected]:/root/

在迁移主机192.168.2.9上面查看是否将tar包传输过来了

将tar包制作成镜像

[root@qianyi ~]# docker load < my-nginx.tar

[root@qianyi ~]# docker load < datapacked.tar

[root@qianyi ~]# docker images

搭建双机热备并迁移docker_第25张图片

创建一个容器当数据库卷

[root@qianyi ~]# docker create --name vc_data01 datapacked

创建一个容器当数据库卷

[root@qianyi ~]# docker create --name vc_data01 datapacked

基于数据卷运行一个容器并指定端口

[root@qianyi ~]# docker run -itd --name nginx -p 80:80 --volumes-from vc_data01 my-nginx:v1.0

在浏览器上面访问网页查看页面是否一致

http://192.168.2.9/

搭建双机热备并迁移docker_第26张图片

访问vip地址呢是否还能正常

http://192.168.2.88/

搭建双机热备并迁移docker_第27张图片

能看到这个呢,一个简单的搭建负载并迁移就完成了。

你可能感兴趣的:(Docker)