构建Docker负载均衡实验

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41614928/article/details/96559424

1. 基础环境准备

(1)登录到实训系统,在#后输入service docker restart命令,然后按Enter键,重启docker服务。示例代码如下:

[root@xxx ~]# service docker restart

重启docker服务截图,如图1所示:

在这里插入图片描述

(2)修改docker配置文件,在#后输入vi /etc/sysconfig/docker命令,然后按Enter键,编辑docker配置文件。示例代码如下:

[root@xxx ~]# vi /etc/sysconfig/docker

将两行代码注释,如下所示(在下面两行代码前加个“#”号):

#ADD_REGISTRY='--add-registry 127.0.0.1:5000'

#INSECURE_REGISTRY='--insecure-registry 127.0.0.1:5000'

注释代码,如图2所示:
在这里插入图片描述

保存退出docker配置文件。

(3)在#后输入service docker restart命令,然后按Enter键,重启docker服务。示例代码如下:

[root@xxx ~]# service docker restart

重启docker服务截图,如图3所示:

在这里插入图片描述

以下步骤中需注意,下载镜像前,请配置加速器,具体步骤参考实验五。

(4)下载镜像,在#后输入docker pull nginx命令,然后按Enter键,下载nginx镜像。示例代码如下:

[root@xxx ~]# docker pull nginx

下载nginx镜像成功截,如图4所示:
在这里插入图片描述

(5)下载镜像,在#后输入docker pull tomcat命令,然后按Enter键,下载tomcat镜像。示例代码如下:

[root@xxx ~]# docker pull tomcat

下载tomcat镜像成功截图,如图5所示:
在这里插入图片描述

(6)查询镜像,在#后输入docker images命令,然后按Enter键,查看镜像列表。示例代码如下:

[root@xxx ~]# docker images

镜像列表截图,如图6所示:

在这里插入图片描述

  1. 创建发布目录
    (1)创建www1、www2目录,并写一个默认欢迎页面,在#后面输入mkdir www1 www2命令,创建www1和www2目录,示例代码如下:

root@xxx ~]# mkdir www1 www2

(2) 在#后输入cd www1命令,然后按Enter键,进入www1目录,示例代码如下:

[root@xxx ~]# cd www1/

[root@xxx www1]#

(3)创建www1目录下的index.jsp文件,在#后输入vi index.jsp命令,然后按Enter键,创建index.jsp文件,示例代码如下:

[root@xxx www1]# vi index.jsp

index.jsp文件的内容,如下所示:

<html>
    <head>
           <title>Tomcat1</title>
    </head>
    <body>
           <%
                  out.println("this is Tomcat1");
           %>
    </body>
</html>

(4) 创建www2目录下的index.jsp文件,在#后输入cd …命令,然后#后输入cd www2命令,接着#后输入vi index.jsp命令,创建index.jsp文件,示例代码如下:

[root@xxx www1]# cd …

[root@xxx ~]# cd www2/

[root@xxx www2]# vi index.jsp

index.jsp文件的内容,如下所示:

<html>
    <head>
           <title>Tomcat2</title>
    </head>
    <body>
           <%
                  out.println("this is Tomcat2");
           %>
    </body>
</html>

在#后输入cd命令退回根目录。

3. 创建tomcat容器

(1)启动tomcat1容器,在#后面输入docker run -ti -d -P -h tomcat1 -v /root/www1:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash命令,创建容器,示例代码如下:

[root@xxx ~]# docker run -ti -d -P -h tomcat1 -v /root/www1:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash

启动容器成功,如图7所示:

在这里插入图片描述

(2)进入tomcat1容器,启动服务,在#后面输入docker exec -it 41a42d053761 /bin/bash命令(41a42d053761为容器ID,可以通过docker ps -a查询到),然后输入cd bin,接着输入startup.sh,(启动服务需要等待一段时间,约5分钟)示例代码如下:

[root@xxx ~]# docker exec -it 41a42d053761 /bin/bash

root@tomcat1:/usr/local/tomcat# cd bin

root@tomcat1:/usr/local/tomcat/bin# startup.sh

效果代码如图8所示:
在这里插入图片描述
(3)退出tomcat1容器,在#后面输入exit命令,然后按Enter键,退出容器,示例代码如下:

root@tomcat1:/usr/local/tomcat/bin# exit

exit

[root@xxx ~]#

(4)启动tomcat2容器,在#后面输入docker run -ti -d -P -h tomcat2 -v /root/www2:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash命令,创建容器,示例代码如下:

[root@xxx ~]# docker run -ti -d -P -h tomcat2 -v /root/www2:/usr/local/tomcat/webapps/ROOT tomcat:latest /bin/bash

启动容器成功,如图9所示:

在这里插入图片描述

(5)进入tomcat2容器,启动服务,在#后面输入docker exec -it 2f7386a4401c /bin/bash命令(2f7386a4401c为容器ID,可以通过docker ps -a查询到),然后输入cd bin,接着输入startup.sh,(启动服务需要等待一段时间,约5分钟)示例代码如下:

[root@xxx ~]# docker exec -it 2f7386a4401c /bin/bash

root@tomcat1:/usr/local/tomcat# cd bin

root@tomcat1:/usr/local/tomcat/bin# startup.sh

效果代码如图10所示:

在这里插入图片描述

(6)查询tomcat1效果,在#后面输入curl 10.24.2.45:32769命令(ip为宿主机ip,可以通过ip a查询到;端口号为容器的端口号,可以用docker ps -a查询到),然后按Enter键,示例代码如下:

[root@xxx ~]# curl  10.24.2.45:32769

<html>
    <head>
           <title>Tomcat1</title>
    </head>
    <body>
           this is Tomcat1
    </body>
</html>

curl效果代码如图11所示:
在这里插入图片描述

(7)查询tomcat2效果,在#后面输入curl 10.24.2.45:32770命令(ip为宿主机ip,可以通过ip a查询到;端口号为容器的端口号,可以用docker ps -a查询到),然后按Enter键,示例代码如下:

[root@xxx ~]# curl  10.24.2.45:32770

<html>
    <head>
           <title>Tomcat2</title>
    </head>
    <body>
           this is Tomcat2
    </body>
</html>

curl效果代码如图12所示:
在这里插入图片描述

4. 创建nginx容器,实现负载均衡

(1)创建nginx容器,在#后面输入docker run -itd -p 80:80 --name nginx nginx:latest /bin/bash命令(创建nginx容器的时候注意端口80是不是被占用,如果被占用可以选择使用其他端口。),然后按Enter键,示例代码如下:

[root@xxx ~]# docker run -itd -p 80:80 --name nginx nginx:latest /bin/bash 2abcd7ee80536e4c65366ed59d962603b7c5a7ecd88d0e69046bb07011d65b66

创建nginx如图13所示:
在这里插入图片描述
(2)编写nginx.conf文件,在#后面输入vi nginx.conf命令,然后按Enter键,示例代码如下:

[root@xxx ~]# vi nginx.conf

nginx.conf的内容,如下所示( 文件内容中的三处ip要修改成自己的本地ip和端口):

user  nginx;

worker_processes  1;
error_log  /var/log/nginx/error.log warn;

pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {

    include       /etc/nginx/mime.types;

    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    
    include /etc/nginx/conf.d/*.conf;

upstream wei {
    server 10.24.2.45:32769;
    server 10.24.2.45:32770;
}

server {
    listen       80;
    server_name  10.24.2.45;
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {
        proxy_pass http://wei;
    }
}
}

(3)将nginx.conf配置拷贝到nginx容器中,在#后面输入docker cp /root/nginx.conf 2abcd7ee8053:/etc/nginx/nginx.conf命令(id为nginx容器的id,可以用docker ps -a查询),然后按Enter键,示例代码如下:

[root@xxx ~]# docker cp /root/nginx.conf 2abcd7ee8053:/etc/nginx/nginx.conf

(4)进入容器,启动nginx服务,在#后面输入docker exec -it 2abcd7ee8053 /bin/bash命令(id为nginx容器的id,可以用docker ps -a查询),然后按Enter键;接着在#后面输入/usr/sbin/nginx,按Enter键,示例代码如下:

[root@xxx ~]# docker exec -it 2abcd7ee8053 /bin/bash

root@2abcd7ee8053:# /usr/sbin/nginx

(5)退出nginx容器,在#后面输入exit命令,然后按Enter键,退出容器,示例代码如下(若退出时间较长,可以刷新浏览器页面):

root@2abcd7ee8053:# exit

exit

[root@xxx ~]#

(6)查看实现效果,在#后面输入for i in ``seq 1 4 ` ;do curl 10.24.2.45;done(ip为本机ip,可以用ip a命令查询)命令,然后按Enter键,查看效果,示例代码如下:

 [root@xxx ~]# for i in `seq 1 4`;do curl 10.24.2.45;done

实现效果如图14所示:

在这里插入图片描述

通过访问的结果可以看出,我们访问nginx代理站点,能够访问Tomcat1和Tomcat2的服务,实现的负载均衡的效果。

展开阅读全文

没有更多推荐了,返回首页