haproxy+keepalive+nginxの詳しい説明
外部ネットワーク サーバーにアクセスできない場合は、次の直接 yum install keepalived -y にアクセスして、6 番目の手順に進んでキープアライブ
をダウンロードし : https://www.keepalived.org/software/keepalived-2.2。 4.tar.gz
1: haproxy インストール プロセス:
パッケージアドレス: https://src.fedoraproject.org/repo/pkgs/haproxy/
1.yumのインストール
yum install haproxy keepalived -y
2. haproxy.confの詳細設定
global
# 全局配置部分,用于设置 HAProxy 的一般设置
log /dev/log local0 # 将日志记录到本地
log /dev/log local1 notice # 将日志记录到本地,只记录严重级别的信息
chroot /var/lib/haproxy # 将 HAProxy 进程的根目录更改为指定目录
maxconn 4000 #最大连接数4000,默认1024
user haproxy # 运行 HAProxy 进程的用户名
group haproxy # 运行 HAProxy 进程的用户组名
daemon # 以守护进程模式运行 HAProxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners # 启用 HAProxy 的统计信息,并指定统计信息的监听地址及权限等级
# 设置日志记录、用户和组以及统计信息设置
defaults
# 默认配置部分,用于定义默认的后端服务器和请求处理设置
log global # 将默认日志记录到全局日志
mode http # 默认请求模式为 HTTP(7层),tcp4层
option httplog # 开启 HTTP 请求日志
option dontlognull # 不记录请求响应为空的日志(健康检查)
option redispatch #某一台故障,强制转换
retries 3 #重试3次
timeout connect 5000 # 默认连接超时时间为 5 秒
timeout client 50000 # 默认客户端超时时间为 50 秒
timeout server 50000 # 默认后端服务器超时时间为 50 秒
# 定义了默认的后端服务器、请求模式和一些超时设置
frontend main
# 前端部分,用于定义监听器和负载均衡规则
bind *:80 # 监听所有 IP 地址的 80 端口
bind *:443 ssl crt /etc/haproxy/certs/ # 监听所有 IP 地址的 443 端口,并使用指定的证书
mode http # 请求模式为 HTTP
option http-server-close # 关闭服务器端的 HTTP 连接
option forwardfor # 启用 X-Forwarded-For 头信息
option http-pretend-keepalive # 开启 HTTP 长连接模式
# 监听端口、请求模式和其他 HTTP 选项
acl url_static path_beg -i /static /images /javascript /stylesheets # 定义 ACL 规则,用于匹配静态文件 URL 的路径前缀
acl url_static path_end -i .jpg .gif .png .css .js # 定义 ACL 规则,用于匹配静态文件 URL 的路径后缀
use_backend static if url_static # 如果请求 URL 匹配到 ACL 规则,则使用名为 static 的后端服务器池
default_backend app # 默认使用名为 app 的后端服务器池
# ACL 规则,用于匹配 URL,然后根据规则将请求路由到不同的后端服务器。
backend app
# 后端部分,用于定义后端服务器池
balance roundrobin # 使用轮询算法进行负载均衡
mode http # 请求模式为 HTTP
option http-server-close # 关闭服务器端的 HTTP 连接
option forwardfor # 启用 X-Forwarded-For 头信息
server web1 192.168.1.50:80 check
server web2 192.168.1.51:80 check
server web3 192.168.1.52:80 check
# 后端服务器池,定义了负载均衡策略、请求模式和服务器地址及健康检查
backend static
# 静态文件后端,用于缓存静态文件
balance roundrobin # 使用轮询算法进行负载均衡
mode http # 请求模式为 HTTP
option http-server-close # 关闭服务器端的 HTTP 连接
option forwardfor # 启用 X-Forwarded-For 头信息
option httpchk GET /check.txt # 使用 HTTP GET 请求进行健康检查,检查路径为 /check.txt
server static1 192.168.0.101:80 check # 定义名为 static1 的后端服务器,IP 地址为 192.168.0.101,端口为 80,开启健康检查
server static2 192.168.0.102:80 check # 定义名为 static2 的后端服务器,IP 地址为 192.168.0.102,端口为 80,开启健康检查
# 缓存静态文件的后端服务器池
上記の設定ファイルは主に次の部分に分かれています。
1. グローバル構成セクション: ログ レコード、ユーザーとグループ、統計などの HAProxy の一般設定を設定します。
2. デフォルト設定セクション: デフォルトのバックエンド サーバーとリクエスト処理設定 (タイムアウト設定、リクエスト モードなど) を定義します。
3. フロントエンド部分: リスナーと負荷分散ルール (リスニング ポート、リクエスト モード、ACL ルールなど) を定義します。
4. バックエンド部分: 負荷分散戦略、リクエスト モード、サーバー アドレス、ヘルス チェックなどを含むバックエンド サーバー プールを定義します。
5. 静的ファイル バックエンド: 静的ファイルをキャッシュするためのバックエンド サーバー プールは、バックエンド部分と同じ設定を使用します。
2: keepalived インストール プロセス: (yum インストールの 8 番目の手順は省略できます)
keepalived
1. 設定ファイルを書き込み、ipvsadm 設定クラスターを自動的に実行
2. ヘルスチェック
3. フローティング vip vrrp ルーティング ホットスタンバイ
cd /usr/local
tar -zxvf keepalived-1.2.15.tar.gz
cd keepalived-1.2.15
1.configureは設定コマンドを実行します。
./configure --prefix=/usr/local/keepalived
2. コンパイル make
エラーは次のとおりです。
インストール:yum install -y openssl-*
インストール:yum -y install libnl libnl-devel
成功後のインターフェース
3. インストール
make install
4. ソフトリンクを作成するか、ファイルを直接コピーします
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ #拷贝命令
##ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived#做软连接#
5. etcディレクトリを作成します。
mkdir /etc/keepalived
6. keepalived ログのストレージ パスを変更します。
·vim /etc/sysconfig/keepalived
#手动安装的两个都需要改,或改完直接拷贝
·vim /usr/local/keepalived/etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -d -S 0" #修改内容 -d备份配置文件数据,可加选参数-f
/var/log/keepalived.log
vim /etc/rsyslog.conf shift+g 到文末
keepalived -S 0
local0.* /var/log/keepalived.log #修改内容
重启rsyslog
Systemctl restart rsyslog
7. サービスが自動的に開始されることを保証する
把源文件备份
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-bak
本地keepalived.conf-master、keepalived .conf-backup、nginx_check.sh(主备都需要)分别拷贝到主备服务器
/etc/keepalived/下(确认网卡是eth0)
需要修改conf文件中mcast_src_ip 10.10.3.14 #本机真实ip
virtual_ipaddress {
10.10.3.200 #设置vip,可以多个}
8. Keepalived のアクティブおよびスタンバイ設定ファイル
keepalived.conf-master
! Configuration File for keepalived
global_defs {
router_id web1 #路由器id,主备不一致
}
vrrp_script nginx_check {
script "/etc/keepalived/nginx_check.sh"
interval 2 #检测时间间隔
weight -2 #如果条件成立,权重 -20 对比主备权重优先级
}
vrrp_instance VI_1 {
state MASTER #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实力绑定网卡
virtual_router_id 51#主备VRID必须一致必须相同,多个集群识别分组
priority 100 #MASTER优先级必须高于backup:99
mcast_src_ip 10.10.3.14 #本机ip
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {
#设置认证
auth_type PASS #认证方式
auth_pass 123456 #认证密码,主备必须一致
}
track_script {
#将track_script模块加入instance
nginx_check #执行nginx监控服务
}
virtual_ipaddress {
10.10.3.200 #设置vip,可以多个,每行一个
}
}
#virtual_server 10.10.3.200 8888 {
#自动配置lvs,ipvsadm -A VIP规则
# delay_loop 6
# lb_algo rr #算法wrr lc。。。
# lb_kind NAT #工作模式 DR TUN
# #persistence_timeout 50 #按时间保持连接
# protocol TCP
#
# real_server 10.10.3.14 8888 {
# weight 1
# TCP_CHECK {
#健康检查 tcp_check 检查端口 http_get 检查链接(url{
path,digest[MD5值]})
# connect_timeout 3
# retry 3
# delay_before_retry 3
# }
# }
# real_server 10.10.3.15 8888 {
# weight 2
# TCP_CHECK {
#健康检查 tcp_check 检查端口 http_get 检查链接
# connect_timeout 3
# retry 3
# delay_before_retry 3
# }
# }
#}
キープアライブ .conf-backup
! Configuration File for keepalived
global_defs {
router_id web2
}
vrrp_script nginx_check {
script "/etc/keepalived/nginx_check.sh"
interval 2 #检测时间间隔
weight -2 #如果条件成立,权重 -20 对比主备权重优先级
}
vrrp_instance VI_1 {
state BACKUP #标示状态为MASTER 备份机为BACKUP
interface eth0 #设置实力绑定网卡
virtual_router_id 51 #主备VRID必须一致必须相同
priority 99 #MASTER优先级必须高于backup:99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
mcast_src_ip 10.10.3.15
authentication {
#设置认证
auth_type PASS #认证方式
auth_pass 123456 #认证密码,主备必须一致
}
track_script {
#将track_script模块加入instance
nginx_check #执行nginx监控服务
}
virtual_ipaddress {
10.10.3.200 #设置vip,可以多个,
}
}
#virtual_server 10.10.3.200 8888 {
# delay_loop 6
# lb_algo rr
# lb_kind NAT
# persistence_timeout 50
# protocol TCP
#
# real_server 10.10.3.14 8888 {
# weight 1
# TCP_CHECK {
# connect_timeout 3
# retry 3
# delay_before_retry 3
# }
# }
# real_server 10.10.3.15 8888 {
# weight 2
# TCP_CHECK {
# connect_timeout 3
# retry 3
# delay_before_retry 3
# }
# }
#}
#
nginx_check.sh
#!/bin/sh
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
検証:
マスター: ip a は eth0 ネットワーク カードの下の VIP を認識できますが、スタンバイ サーバー上では認識できません。
9.キープアライブを開始する
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
#systemctl启动默认从/etc/keepalived下找配置文件
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
chkconfig keepalived on//systemctl enable keepalived
service keepalived start//systemctl start keepalived
启动keepalived 后查看/var/log目录下是否存在keepalived。