1. システム環境とソフトウェアのバージョン
centos 6.6 x64
keepalived-1.2.18.tar.gz
nginx-1.6.2.tar.gz
マスターサーバー: 192.168.38.64
スレーブサーバー: 192.168.38.66
vip:192.168.38.100
2. nginx のインストール (マスター-スレーブのインストールは一貫しています)
1. 依存環境をインストールします
コードをコピーしますコードは次のとおりです:
yum install gcc gcc- c make automake autoconf libtool pcre pcre-devel zlib zlib-developenssl openssl-devel
##2.nginx を opt ディレクトリにアップロードします
3. 解凍してインストール
# tar -zxvf nginx-1.6.2.tar.gz # cd nginx-1.6.2 # ./configure --prefix=/opt/nginx (prefix=/opt/nginx 这个指定的是 nginx目录) # make && make install4. nginx リスニング ポートとindex.html# vi /opt/nginx/conf/nginx.conf を変更します。
##vi /opt/nginx/html/index.html
5. nginx の起動と一般的なコマンド構成テスト: /opt/nginx/sbin/nginx -t 次のインターフェースが表示され、構成が OK であることが示されます。
開始: /opt/nginx/sbin /nginx
再起動: /opt/nginx/sbin/nginx -s reload
停止: /opt/nginx/sbin/nginx -s stop
6 nginxvi /etc/rc.local
Join: /opt/nginx/sbin/nginx
7 を開始し、ファイアウォールを開いて変更します。 portvi /etc/sysconfig/iptables
追加: -a input -p tcp -m state --state new -m tcp --dport 8888 -j accept
ファイアウォールを再起動します:service iptables restart
8. 問題nginx
# の起動時に問題が発生しました
#vi / etc/ld.so.conf
追加: /opt/nginx/lib/9.nginx 負荷分散
nginx ロード バランシング 主にアップストリーム モジュールによって行われます
nginx 構成ファイルを変更しますvi /data/nginx/conf/nginx.conf以下を追加しますcontent: (web_pools 変数の名前)upstream web_pools { server 10.0.6.108:7080weight=1; server 10.0.0.85:8980weight=1; }サーバー ノードの下の location ノードで proxy_pass を次のように構成します: http://上流名 結果は次のようになります:
ここで、weight は重み、backup はバックアップ サーバーです。バックアップ サーバーは、他のサーバーがダウンした後にのみ起動します。
3. Keepalived のインストール
1. keepalived を opt ディレクトリにアップロードします
2. 解凍してインストールtar -zxvf keepalived-1.2.18.tar.gz cd keepalived-1.2.18 ./configure --prefix=/opt/keepalived make && make install3. keepalived を Linux サービスとしてインストールします
cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /opt/sbin/keepalived /usr/sbin/ ln -s /opt/keepalived/sbin/keepalived /sbin/4. keepalived サービスがブート時に開始されるように設定します
chkconfig keepalived on
5.
keepalived 構成ファイルを変更しますvi /etc/keepalived/ keepalived.conf
! configuration file for keepalived (!、#都是注释) global_defs { #全局配置 notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from alexandre.cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id lvs_01 #这个配置要唯一 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径 interval 2 ## 检测时间间隔 weight -20 ## 如果条件成立,权重-20 } vrrp_instance vi_1 { #实例 vi_1 名字可以随意 但是不建议修改 state master # 主服务器master 从服务器 backup interface em1 # em1 网卡 virtual_router_id 51 #virtual_router_id 主备要一致 priority 100 # 优先级 数字越大 优先级越高 priority 的值 主服务器要大于 从服务器 advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒 authentication { # 主从通信 验证类型及密码 auth_type pass #设置vrrp验证类型,主要有pass和ah两种 auth_pass 1111 #设置vrrp验证密码,在同一个vrrp_instance下,master与backup必须使用相同的密码才能正常通信 } ## 将 track_script 块加入 instance 配置块 track_script { chk_nginx ## 执行 nginx 监控的服务 } virtual_ipaddress { 192.168.38.100/24 #vrrp ha 虚拟地址 如果有多个vip,继续换行填写 } }
6. nginx 状態検出スクリプトを書く
#!/bin/bash a=`ps -c nginx –no-header |wc -l` if [ $a -eq 0 ];then /opt/nginx/sbin/nginx sleep 2 if [ `ps -c nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi保存後、スクリプトに実行権限を付与します:
chmod x/etc/keepalived/nginx_check.sh
7. 注: keepalived マスターとの違いおよびスレーブ設定ファイル
##vi /etc/keepalived/keepalived.conf
保存後、servicekeepalived restart により keepalived サービスを再起動できます
10. テスト
マスター/スレーブの nginx サービスと keepalived サービスを開始します
マスターサーバーからそれぞれ: ip add | grep 192.168.38.100
は 192.168 で確認できます。 38.64
## と 192.168.38.66
マスター サーバー上の keepalived を強制終了すると、スレーブがサーバー
マスター サーバーで keepalived を再度開始すると、マスター サーバーに結果が表示されますが、サーバーからは結果がありません。
当杀死 nginx后,keepalived则会自动启动 nginx服务
11. keepalived脑裂 (ip add | grep 192.168.38.100 在主从都有结果)
解决方案:防火墙问题
iptables-iinput4-pvrrp-jaccept service iptables save service iptables restart
以上がnginx+keepalived高可用性マスター/スレーブ構成方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。