系统相关
首页 > 系统相关> > nginx四层负载

nginx四层负载

作者:互联网

Nginx四层负载

什么是四层负载

OSI七层模型,四层是传输层,传输层使用端口到端口的通信方式
四层负载均衡,就是在传输层做端口转发 (端口映射)

四层负载均衡应用场景

1.四层+七层来做负载均衡,四层可以保障七层的高可用;如nginx就无法保证自己的服务高可用,需要依赖LVS或者keepalive。

2.如: tcp协议的负载均衡,有些请求是TCP协议的 (mysql、ssh),或者书这些请求只需要使用四层进行端口的转发就可以了,所以使用四层负载均衡。

nginx四层负载

# 负载均衡软件:
	nginx
		- 四层负载均衡(nginx 1.9版本以后有stream模块,才可以做四层负载均衡
				stream
		- 七层负载
				upstream
	LVS
		-四层负载
	HAproxy
		- 四层负载
		- 七层负载

四层负载均衡配置

环境准备

主机名 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@ib02 nginx]# 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@ib02 nginx]# yum -y install nginx

# 3.主配置文件添加include
include /etc/nginx/stream.d/*.conf;
http {...}

# 4.配置四层负载
[root@ib02 nginx]# vim /etc/nginx/stream.d/456.conf
stream{
        upstream backend {
                server 172.16.1.5:80;
        }
        server{
                listen 99;
                proxy_pass backend;
        }
}

使用stream做端口转发

实现22端口转发

# 在10.0.0.6机器上开456端口,映射到10.0.0.8的22端口
[root@ib02 nginx]# vim /etc/nginx/stream.d/456.conf
stream{
        upstream web02_ssh{
                server 172.16.1.8:22;
        }
        server {
                listen 456;
                proxy_pass web02_ssh;
        }
        upstream backend {
                server 172.16.1.5:80;
        }
        server{
                listen 99;
                proxy_pass backend;
        }
}

映射数据库端口

stream{
        upstream web02_ssh{
                server 172.16.1.8:22;
        }
        server {
                listen 456;
                proxy_pass web02_ssh;
        }
        upstream backend {
                server 172.16.1.5:80;
        }
        server{
                listen 99;
                proxy_pass backend;
        }
        upstream db01_mysql {
                server 172.16.1.51:3306;
        }
        server {
                listem 8848;
                proxy_pass db01_mysql;
        }       
}

标签:负载,stream,四层,server,nginx,172.16
来源: https://www.cnblogs.com/ghjhkj/p/16389008.html