本文介绍在Docker上配置简单的负载均衡,宿主机为CenteOS7,两个CentOS容器,宿主机安装Nginx,两台容器安装tomcat7。
在宿主机上安装启动nginx
http://nginx.org/en/download.html 下载源码包,编译安装
启动nginx,在浏览器中查看http://192.168.0.101
启动一个容器并设置端口映射,其中一台命令如下
docker run -t -i -p 3222:22 -p 3280:80 970633036444 /bin/bash
上面的命令是以标准的bash输出方式启动一个容器,设置端口映射,用-p参数,-p 宿主机端口:docker容器端口 ,上面的命令是设置宿主机的3222端口映射到容器的22端口,设置宿主机的3280的端口映射到容器的80端口。
在容器中安装jre和tomcat7.0,安装jre
rpm -ivh jre-8u101-linux-x64.rpm
java -version
tar zxvf apache-tomcat-9.0.0.M9-src.tar.gz
cd apache-tomcat-9.0.0.M9-src/bin/
sh startup.sh
启动tomcat,进入解压目录,cd到bin目录,执行命令并输入如下信息,说明tomcat启动成功
[root@aeb981d88b99 bin]# sh startup.sh
Using CATALINA_BASE: /root/apache-tomcat-9.0.0.M9-src
Using CATALINA_HOME: /root/apache-tomcat-9.0.0.M9-src
Using CATALINA_TMPDIR: /root/apache-tomcat-9.0.0.M9-src/temp
Using JRE_HOME: /usr
Using CLASSPATH: /root/apache-tomcat-9.0.0.M9-src/bin/bootstrap.jar:/root/apache-tomcat-9.0.0.M9-src/bin/tomcat-juli.jar
Tomcat started.
由于tomcat默认端口是8080,这里设置的是80端口,所以,需要修改默认端口到80,进入tomcat安装目录的conf目录,用vi打开server.xml文件,将如下配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改为
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
同上面的步骤一致,配置另外一台容器,只是容器启动时设置的映射端口有所区别,命令如下:
docker run -t -i -p 3223:22 -p 3380:80 970633036444 /bin/bash
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 容器ID 查看容器IP
容器配置完成后,剩下的工作就是配置宿主机的Nginx,用来完成负载均衡工作。
进入/etc/nginx目录,用vim编辑nginx.conf,在http节点中增加如下内容:
server {
listen 80;
server_name 192.168.0.101;
location / {
proxy_pass http://blance;
}
}
upstream blance{
server localhost:3280 weight=5;
server localhost:3380 weight=5;
}
首先定义一个upstream,设置web服务器的端口映射和权重,之后定义一个server,监听80端口,server_name为 192.168.1.106,这是宿主机的ip地址(可配置成域名),“location /” 意思是监听80端口下的所有请求,并使用上面设置的upstream作为代理。
9.完成以上配置并保存后,在浏览器中访问http://192.168.1.106/hello.html,并刷新页面,会发现页面有时显示 “hello this is 172.17.0.3”,有时显示“hello this is 172.17.0.2”,说明配置成功,这样就完成了一个简单的负载均衡环境的配置。