inxはmysqlの負荷バランスを実現します。
デフォルトのNginxはhttpの逆エージェントだけをサポートしています。inxがtcpの逆エージェントをサポートするためには、コンパイル時にtcpエージェントモジュールのサポートを追加する必要があります。tcp_proxymodule
以下の操作手順は、nginxにtcp_のみをサポートさせます。proxyは、prce、gzip、sslなどの機能を追加していません。必要であれば、自分でコンパイルする時に関連パラメータを加えてもいいです。
以下の操作手順は、nginxにtcp_のみをサポートさせます。proxyは、prce、gzip、sslなどの機能を追加していません。必要であれば、自分でコンパイルする時に関連パラメータを加えてもいいです。
wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zipunzip master
tar -zxvf nginx-1.6.3.tar.gz
cd nginx-1.6.3
patch -p1 < ../nginx_tcp_proxy_module-master/tcp.patch
./configure --add-module=../nginx_tcp_proxy_module-master --prefix=/usr/local/nginx-1.6.3 --with-http_stub_status_module --with-http_gzip_static_module
make
make install
nginx.com nf主な構成ファイルには、以下の構成が追加されています。user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
include /usr/local/nginx-1.6.3/conf/tcp_proxy.conf;
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 3306;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /nginx_status {
stub_status on;
access_log logs/nginx_status.log;
allow 10.195.197.124;
deny all;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
include/usr/local/inx-1.6.3/conf/tcp_proxy.comtcp {
upstream mysql {
server 10.207.238.66:3306;
server 10.207.238.67:3306;
check interval=3000 rise=2 fall=5 timeout=1000;
#check interval=3000 rise=2 fall=5 timeout=1000
#check interval=3000 rise=2 fall=5 timeout=1000
#check_http_send "GET /HTTP/1.0\r
\r
";
#check_http_expect_alive http_2xxhttp_3xx;
}
server {
listen 3307;
proxy_pass mysql;
}
}
説明:check interval健康診断は、単位がミリ秒rise検査で何回か正常になったら、relserverを負荷リストに追加してfall検査で何回か失敗した後、realservertimeout検査のタイムアウト時間を摘出します。単位は約ミリ秒で具体的にnginxを確認できます。tcp_proxymodule-master/README、とても詳しいです。