nginx基於tcp模組實現mysql代理
阿新 • • 發佈:2020-12-09
工具準備
1.Nginx的tcp模組補丁nginx_tcp_proxy_module
2.Tengine(淘寶優化過後的Nginx,Nginx同樣可行)Tengine-2.1.0
環境描述
Nginx Proxy Server: 192.168.1.100
Mysql Server Slave1: 192.168.1.1
Mysql Server Slave2: 192.168.1.2
Mysql Server Slave3: 192.168.1.3
打入tcp補丁並編譯安裝Tengine
$ cd /usr/local/src/ $ wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip $ unzip master $ wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz $ tar zxvf tengine-2.1.0.tar.gz $ cd tengine-2.1.0 $ yum install patch $ patch -p1 </usr/local/src/nginx_tcp_proxy_module-master/tcp.patch $ ./configure --prefix=/usr/local/nginx_mysql --add-module=/usr/local/src/nginx_tcp_proxy_module-master/ $ make && make install $ vi /usr/local/nginx_mysql/conf/nginx.conf tcp { upstream mysql_proxy { server 192.168.1.1:3306; server 192.168.1.2:3306; server 192.168.1.3:3306; check interval=3000 rise=2 fall=5 timeout=1000; } server { listen 3306; proxy_pass mysql_proxy; } } $ mysql -h 192.168.1.100 -u root -p
Nginx配置引數說明
check interval: 健康檢查,單位是毫秒
rise: 檢查幾次正常後,將reslserver加入以負載列表中
fall: 檢查幾次失敗後,摘除realserver
timeout: 檢查超時時間,單位許毫秒
PS: 具體可檢視nginx_tcp_proxy_module-master/README,很詳細。
模組指令是TCP,它是不屬於HTTP框架內的,所以和HTTP{}同級別
http { upstream http_proxy { server 192.168.1.10:80; } server { listen 80; server_name blog.ch2l.cn; proxy_pass http://http_proxy; } } tcp { upstream tcp_proxy { server 192.168.1.10:3306; } server { listen 3306; proxy_pass tcp_proxy; } }
擴充套件
原生Nginx在2016-02-09 釋出的nginx-1.9.11 版本已經原生支援tcp代理,有興趣的同學可以前往官網檢視 文件