Nginx的TCP/UDP调度器
使用Nginx实现TCP/UDP调度器功能,实现: 后端SSH服务器两台 Nginx编译安装时需要使用--with-stream,开启ngx_stream_core_module模块 Nginx采用轮询的方式调用后端SSH服务器
方案使用4台RHEL7虚拟机,其中一台作为Nginx代理服务器,该服务器需要配置两块网卡,IP地址分别为192.168.4.5和192.168.2.5,两台SSH服务器IP地址分别为192.168.2.100和192.168.2.200。客户端测试主机IP地址为192.168.4.10。
步骤一:部署支持4层TCP/UDP代理的Nginx服务器
1)部署nginx服务器编译安装必须要使用--with-stream参数开启4层代理模块。# nginx -s stop# cd #cd后面没有参数,会默认cd到root[root@proxy ~]# rm -rf /usr/local/nginx/
# cd /root/lnmp_soft/nginx-1.12.2/# https://www.cnblogs.com/summer2/p/configure --with-http_ssl_module --with-stream #开启开启SSL加密功能,开启4层反向代理功能# make && make install# nginx -V---------------------------------------------------------------------------------------------------步骤二:配置Nginx服务器,添加服务器池,实现TCP/UDP反向代理功能
1)修改/usr/local/nginx/conf/nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf... ...stream { #stream{}要在http{}上面添加,必须加载http{}外面,因为它是独立的。 upstream myssh { #myssh这个命名随意 server 192.168.2.100:22; #后端SSH服务器的IP和端口 server 192.168.2.200:22; } server { listen 12345; #nginx监听的端口号可自定义,只要客户端远程ssh -p远程连接时,是这个端口号就行 proxy_pass myssh; #要写上面自定义的名字myssh }}
http {... ...}
2)重启nginx服务# nginx -s reload----------------------------------------------------------------------------------------------------# ss -atunlp | grep 12345 #查看此监听端口是否已启动tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN 10652/nginx: master --------------------------------------------------------------------------------------------------3)客户端使用访问代理服务器测试轮询效果
客户端验证,ssh -p 12345 192.168.4.5时,进入的界面是web1,退出再ssh时,进入的是web2,说明调度成功。
# ssh -p 12345 192.168.4.5 #-p空格后加的是刚才在配置文件里写的端口号12345
root@192.168.4.5's password: Last login: Thu Nov 1 10:42:54 2018 from 192.168.2.254[root@web1 ~]# exit #进入的界面是web1登出Connection to 192.168.4.5 closed.
[root@client ~]# ssh -p 12345 192.168.4.5root@192.168.4.5's password: Last login: Thu Nov 1 10:43:06 2018 from 192.168.2.254[root@web2 ~]# #进入的界面是web2