day14.5
nginx四层负载
什么是四层负载
1.OSI七层模型中,四层是传输层,传输层使用端口的通信方式
2.四层负载均衡,就是在传输层的转发(端口映射)
四层负载应用场景
1.四层+七层来做负载均衡,四层可以保证七层负载的高可用性,如:nginx就无法保证自己的服务高可用,需要依赖lvs或者keepailve
2.tcp协议的负载均衡,有些请求是TCP协议的(MySQL、ssh),或者说这些请求只需要使用四层进行端口的转发就可以了,所以使用四层负载。
nginx四层负载
负载均衡软件
# nginx
1.四层负载(模块名:stream)
2.七层负载(upstream)
# lvs
1.四层负载
# haproxy
1.四层负载
2.七层负载
四层负载均衡配置
环境准备
主机名 | wanip | lanip | 角色 | 应用 |
---|---|---|---|---|
lb01 | 10.0.0.5 | 172.16.1.5 | 七层负载 | nginx |
lb02 | 10.0.0.6 | 172.16.1.6 | 四层负载 | nginx |
web01 | 10.0.0.7 | 172.16.1.7 | web网站 | nginx、php |
web02 | 10.0.0.8 | 172.16.1.8 | web网站 | nginx、php |
db01 | 10.0.0.51 | 172.16.1.51 | 数据库 | mariadb |
部署四层负载
# 1.添加nginx官方源
[root@lb02 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# 2.安装nginx
[root@lb02 ~]# yum install -y nginx
# 3.配置四层负载
[root@lb02 ~]# vim /etc/nginx/nginx.conf
写在http层上面
stream {
upstream backend {
server 172.16.1.5:80;
}
server {
listen 90;
proxy_pass backend;
}
}
使用stream做端口转发
实现22端口转发
# 1.在10.0.0.6机器上开456端口,映射10.0.0.8的22端口
ssh 10.0.0.6 -p 456
# 2.主配置文件.添加include
[root@lb02 ~]# vim /etc/nginx/nginx.conf
写在http层上面
stream {
upstream backend {
server 172.16.1.5:80;
}
server {
listen 90;
proxy_pass backend;
}
}
# 2.实现456映射22端口需求
[root@lb02 stream.d]# vim 456_22.conf
stream {
upstream web02_ssh {
server 172.16.1.8:22;
}
server {
listen 456;
proxy_pass web02_ssh;
}
upstream backend {
server 172.16.1.8:80;
}
server {
listen 90;
proxy_pass backend;
}
}
映射数据库端口
# 在四层负载上编写配置文件
[root@lb02 stream.d]# vim 456_22.conf
stream {
upstream web02_ssh {
server 172.16.1.8:22;
}
server {
listen 456;
proxy_pass web02_ssh;
}
upstream backend {
server 172.16.1.8:80;
}
server {
listen 90;
proxy_pass backend;
}
}
# 在测试web上下载数据库
[root@web01 ~]# yum install -y mariadb
# 检测
[root@web01 ~]# mysql -uwp_user -p111 -h10.0.0.6 -P3307
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了