ngx_stream_proxy_module模块--实现Nginx tcp负载均衡

 

七层代理和三层代理的配置文件结构
http {		                      #ngx_http_core_module模块
	
     upstream httpdsrvs {
		server 192.168.80.120 weight=3 ;
        }
    server {
	listen 80;
        server_name  www.magedu.net;	#监听域名和端口
        location / {
            proxy_pass http://httpdsrvs;   #ngx_http_upstream_module模块
		}
	}
} 

----------------------------------------------------------------------------------------------------------- stream { #ngx_stream_core_module模块 upstream mysqlsrvs { server 192.168.80.120:3306 weight=3 ; } server { listen 172.16.100.100:3306; #监听IP和端口 proxy_pass mysqlsrvs; #ngx_stream_proxy_module模块 } } 实现Nginx tcp负载均衡 Nginx在1.9.0版本开始支持tcp模式的负载均衡,在1.9.13版本开始支持udp协议的负载,udp主要用于DNS的域名解析,其配置式和指令和http代理类似, 其基于ngx_stream_proxy_module模块实现tcp负载,另外基于模块ngx_stream_upstream_module实现后端服务器分组转发、权重分配、状态监测、调度算法等高级功能。 ngx_stream_core_module模块: 模拟反代基于tcp或udp的服务连接,即工作于传输层的反代或调度器,定义在main区,与http平级,一个七层,一个四层。 stream { ... } 定义stream相关的服务;Context:main #定义调度算法 hash $remote_addr consistent; 源地址hash调度方法,基于的客户端的remote_addr least_conn; 最少连接调度算法 ngx_stream_proxy_module模块 :可实现代理基于TCP,UDP (1.9.13), UNIX-domain sockets的数据流 proxy_pass address; 指定后端服务器地址或socket proxy_timeout timeout; 无数据传输时,保持连接状态的超时时长,默认为10m proxy_connect_timeout time; 设置nginx与被代理的服务器尝试建立连接的超时时长,默认为60s stream { #redis服务器 upstream redis_server { #hash $remote_addr consistent; server 192.168.80.130:6379 max_fails=3 fail_timeout=30s; } server { listen 192.168.80.110:6379; proxy_connect_timeout 3s; proxy_timeout 3s; proxy_pass redis_server; } #数据库服务器 upstream mysql_server { least_conn; server 192.168.80.140:3306 max_fails=3 fail_timeout=30s; } server { listen 192.168.80.110:3306; proxy_connect_timeout 3s; proxy_timeout 3s; proxy_pass mysql_server; } } [root@ ]# vim /apps/nginx/conf/nginx.conf 21 include /apps/nginx/conf/tcp/tcp.conf; #注意此处的include与http模块平级 [root@localhost7B ~]# netstat -antlp | grep 6379 tcp 0 0 192.168.80.110:6379 0.0.0.0:* LISTEN 96215/nginx: master [root@localhost7B ~]# [root@localhost7B ~]# netstat -antlp | grep 3306 tcp 0 0 192.168.80.110:3306 0.0.0.0:* LISTEN 96215/nginx: master redis服务器配置 yum install redis -y vim /etc/redis.conf bind 0.0.0.0 systemctl start redis systemctl enable redis netstat -antlp | grep 6379 #测试成功 # redis-cli -h 192.168.80.110 192.168.80.110:6379> set name zzhz OK 192.168.80.110:6379> get name "zzhz" 数据库服务器配置 yum install mariadb mariadb-server -y systemctl start mariadb systemctl enable mariadb mysql_secure_installation mysql -uroot -p123456 MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; MariaDB [(none)]> FLUSH PRIVILEGES; #测试成功 mysql -uroot -p123456 -h 192.168.80.110

  

posted @ 2022-07-20 18:04  yuanbangchen  阅读(610)  评论(0编辑  收藏  举报