使用 docker 容器配置负载平衡 2019-05-11
最编程
2024-03-06 09:46:50
...
利用nginx和两个tomcat容器
nginx映射8181端口,tomcat分别映射9191和9292端口。
(关闭firewalld等服务。本机地址为192.168.200.104,docker私有仓库)
创建不同的主页来区分这两个tomcat容器。
[root@server ~]# echo "this tomcat1 port:9191" > tomcat1/index.html
[root@server ~]# echo "this tomcat2 port:9292" > tomcat2/index.html
[root@server ~]# cat tomcat1/index.html
this tomcat1 port:9191
[root@server ~]# cat tomcat2/index.html
this tomcat2 port:9292
配置nginx负载均衡器:(nginx默认端口80)
[root@server ~]# docker run -dit --name nginx -p 8181:80 192.168.200.104:5000/nginx:latest
98a219645301e873f8960277faace72303301b244f233f0bba5ee42ce2dfd573
复制nginx配置文件到宿主机:
[root@server ~]# docker cp nginx:/etc/nginx/nginx.conf .
在http{}下添加:upstream server项和server项。
[root@server ~]# cat nginx.conf
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 server{
server 192.168.200.104:9191;
server 192.168.200.104:9292;(负载均衡列表)
}
server {
listen 80;(nginx监控端口)
server_name 192.168.200.104;(接管的访问地址)
location / {
proxy_pass http://server;
root html;
index index.html index.htm;
}
}
}
将配置文件复制到nginx容器,然后重启容器:
[root@server ~]# docker cp nginx.conf nginx:/etc/nginx/
[root@server ~]# docker restart nginx
nginx
[root@server ~]# docker ps | grep nginx
98a219645301 192.168.200.104:5000/nginx:latest "nginx -g 'daemon off" 9 minutes ago Up 6 seconds 0.0.0.0:8181->80/tcp nginx
分别运行两个tomcat容器:(tomcat的默认端口是8080)
[root@server ~]# docker run -dit --name tomcat1 -v /root/tomcat1/:/usr/local/tomcat/webapps/ROOT -p 9191:8080 192.168.200.104:5000/tomcat:latest
b300bfea2a972c756062c03c9813781ce18579a7ba8a620d80cee9ddc3c37a38
[root@server ~]# docker exec -it tomcat1 bash
root@b300bfea2a97:/usr/local/tomcat# sh bin/startup.sh
Tomcat started.
[root@server ~]# docker run -dit --name tomcat2 -v /root/tomcat2/:/usr/local/tomcat/webapps/ROOT -p 9292:8080 192.168.200.104:5000/tomcat:latest
a681d7e3ea3b8f1b0f9c899a945fa43ea080d83c99f8ba61431e9f8fef1cef07
[root@server ~]# docker exec -it tomcat2 bash
root@a681d7e3ea3b:/usr/local/tomcat# sh bin/startup.sh
Tomcat started.
访问nginx端口(等容器完全启动后):
[root@server ~]# curl http://192.168.200.104:8181
this tomcat1 port:9191
[root@server ~]# curl http://192.168.200.104:8181
this tomcat2 port:9292
over!
上一篇: Swagger 接口文档
推荐阅读
-
高级 Docker 容器配置
-
使用 Remote-SSH 配置寒武纪服务器开发容器的 Vscode - II。配置步骤
-
使用 Docker 更新容器映像的三种方法
-
使用 watchtower 自动更新 docker 映像和容器
-
开源项目 ChatGPT-Next-Web 容器化部署(IV)--使用 configmap 配置进行 k8s 容器部署
-
如何使用 Docker 进行容器性能测试和压力测试
-
Docker 容器嵌入式开发:在 Ubuntu 上配置 Hive
-
使用阿里云容器将 Docker 映像发布到 DockerHub
-
如何在 Docker 中安装、配置和使用 Minio 并挂载目录
-
云服务器+家用电脑(无公网 IP)Pinode 节点部署教程--理论上,无论你身在何处,只要能上网,就能运行一个固定 IP 的 Pi 节点节点!(注:不能直接部署独立云服务器)本方案相对运营商公网 IP 有以下优势:拥有稳定的固定 IP(阿里云 IP),解决了运营商不分配公网 IP 或分配动态 IP 的问题 ②节点部署在本地电脑上,相对安全。因为是使用阿里云的专网,稳定性也很强。希望对大家有用,帮助大家解决没有公网的节点部署问题。第一步:环境准备 1、本地电脑配置: ①操作系统:推荐 WIN10 专业版(目前节点容器只支持 2004 专业版) ②内存:推荐 4G 及以上 建议:https://item.taobao.com/item.htm?spm=a2126o.success.0.0.61 b94831SbZESt&id=6346663414282,阿里云服务器租用:阿里云(推荐1核2G以上,ECS共享s6,带宽3-5M即可,以下两个链接都可以,选择一个合适的即可)https://www.aliyun.com/minisite/ goods?userCode=is7i4iav