华为云环境下Docker+Tomcat+Nginx实现负载均衡
本文最后更新于:2022年7月7日 上午
负载均衡:
在多台服务器之间有效地分配客户端请求或网络负载
通过仅向正常服务器发送请求确保高可用性和可靠性
业务不中断地情况下,按需弹性分配服务器资源
以减少宕机时间、提供系统可用性、动态扩展性能、加快访问速度。
实例演示
要求部署一台Nginx和三台Tomcat服务器,且Ngnix需要实现三种策略:
- 轮询
- 权重,三台Tomcat服务器的权重为1, 3, 5
- IP Hash
购买云服务器和公网IP
买的是华为云的弹性云服务器,配置选基础的就可以,因为只是实验用途,所以计费模式选的按需计费
然后镜像的话选CentOS7就行,一开始选的Ubuntu发现教程很少,然后换成CentOS8发现后续过程会出现一些权限问题(qwq踩坑达人
还需要买一个弹性公网IP,不然在服务器上没法上网(好像
带宽也就选的默认的5Mb/s
然后恭喜你就会拥有一台云服务器!
设置安全组入规则,为了后续的端口正常访问
可以点击远程登录就可以对它操作啦
这里有两种登录方式,推荐第一种CloudShell哦,那里面可以直接CV复制粘贴,还有资源管理器的可视化显示
输入之前设置的密码就可以登录成功啦
安装Docker
1 |
|
拉取Tomcat Nginx镜像
1 |
|
创建Tomcat Nginx容器
1 |
|
部署Nginx容器
1 |
|
打开浏览器,输入你的公网IP地址:设置的端口号
查看是否部署成功
部署Tomcat容器
总共要部署三个,操作都是一样的哦
1 |
|
打开浏览器,输入你的公网IP地址:设置的端口号
查看是否部署成功
修改Tomcat默认主页内容
现在三个Tomcat服务器上的主页内容都是一样的,如果通过Nginx代理访问的话无法区分它们,所以要修改它们的主页内容
分别进入三个Tomcat容器修改网页代码
1 |
|
加一小段不同的字就行
输入
vim
命令后会出现命令不存在的情况,需要在服务器内安装vim
1
2apt-get update
apt-get install vim网络原因可能会很慢,但是耐心等待就好
最终的修改效果如下:
Nginx负载均衡配置
首先进入Nginx容器,编辑配置文件,开启Nginx代理转发
1 |
|
轮询法
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
修改upstream模块
1 |
|
重启Nginx服务器
1 |
|
浏览器访问Nginx服务器,并刷新进行多次访问
发现访问顺序为Tomcat#1-#2-#3
权重法
权重(weight)默认值为1,权重越高,被分配的请求数量越多,将请求顺序且按照权重分配到后端再进行轮询。
修改upstream模块
1 |
|
重启Nginx服务器
1 |
|
浏览器访问Nginx服务器,并刷新进行多次访问
9次访问中Tomcat#1
1次,Tomcat#2
3次,Tomcat#3
5次,与设置的权重相符
IP_HASH法
根据获取请求客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客户端要访问服务器的序号。每个请求固定访问同一个后端服务器,这样可以做到会话保持,解决session同步问题。
修改upstream模块
1 |
|
重启Nginx服务器
1 |
|
浏览器访问Nginx服务器,并刷新进行多次访问
发现一直访问的是Tomcat#1
本文作者: 31
本文链接: http://uuunni.github.io/2022/05/10/nginx-load-balancing/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!