mini介質安裝Centos7html
1.Centos環境準備linux
1.1 啓用root用戶ssh登陸web
vi /etc/ssh/sshd_config後端
PermitRootLogin yesapi
systemctl restart sshd.service服務器
1.2環境準備及安裝網絡
yum -y update負載均衡
yum install wget ftp ntp* mlocate openssl openssl-devel openssl-perl.x86_64 net-tools gcc automake autoconf libtool make -yfrontend
關閉SELINUXdom
vi /etc/selinux/config
SELINUX=enforcing改爲SELINUX=disabled
getenforce
建立系統帳號
useradd -s /sbin/nologin -M haproxy
id haproxy
配置NTP服務
vi /etc/ntp.config
添加以下內容
fudge 127.127.1.0 stratum 12
server ntp.api.bz iburst minpoll 6 maxpoll 7
server 0.cn.pool.ntp.org iburst minpoll 6 maxpoll 7
server 1.cn.pool.ntp.org iburst minpoll 6 maxpoll 7
server 2.cn.pool.ntp.org iburst minpoll 6 maxpoll 7
# service ntpd start
# systemctl enable ntpd.service
檢查服務狀態
# netstat -ano |grep :123
# ntpq -p
1.2.1 Cert證書準備
1.2.2 根證書
1.2.2.1檢查根證書是否包含在主機內:
curl https://mail.alan.corp/owa
1.2.2.2 第三方根證書導入主機
root.cer(根證書) intermediate.cer 中間證書機構
Der格式證書轉Base64格式
openssl x509 -in root.cer -inform der -outform pem -out root.pem
openssl x509 -in intermediate.cer -inform der -outform pem -out intermediate.pem
將頒發證書機構導入本機證書
c_rehash .
cat 4b37341f.0 >> /etc/pki/tls/certs/ca-bundle.crt
1.2.2.3 將Exchange主機私有證書導入本機
mail.pfx(Exchange主機證書帶私有證書,導出保存Base64格式)
openssl pkcs12 -in mail.pfx -nocerts -out exchange_private_key_passwordprotected.pem
輸入pfx文件密碼,輸入Pem文件密碼(4位以上)
openssl rsa -in exchange_private_key_passwordprotected.pem -out exchange_private_key_nopassword.pem
輸入Pem密碼
openssl pkcs12 -in mail.pfx -clcerts -nokeys -out exchange_certificate.pem
輸入pfx密碼
cat exchange_certificate.pem exchange_private_key_nopassword.pem > exchange_certificate_and_key_nopassword.pem
mv exchange_certificate_and_key_nopassword.pem /etc/ssl/certs/
1.3 安裝haproxy
1.3.1軟件下載編譯及安裝
cd /tmp
下載並解壓縮
下載方法01:wget http://www.haproxy.org/download/1.9/src/haproxy-1.9.6.tar.gz
tar -zxvf haproxy-1.9.6.tar.gz
下載方法02:curl --progress http://www.haproxy.org/download/1.9/src/haproxy-1.9.6.tar.gz | tar xz
cd haproxy-1.9.6
#安裝haproxy
Hadir=/data/haproxy #安裝目錄
mkdir -p $Hadir
tar -axf haproxy-* && cd ./haproxy-*
make TARGET=linux310 ARCH=x86_64 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_CRYPT_H=1 USE_LIBCRYPT=1 PREFIX=$Hadir
make install PREFIX=$Hadir
$Hadir/sbin/haproxy -v
$Hadir/sbin/haproxy -vv
#內核優化
#NAT轉發
sed -i 's@net.ipv4.ip_forward = 0@net.ipv4.ip_forward = 1@g' /etc/sysctl.conf
grep ip_forward /etc/sysctl.conf
echo "net.ipv4.ip_nonlocal_bind = 1" >>/etc/sysctl.conf #容許沒監聽IP時啓動
sysctl -p
1.3.2啓動腳本配置
cp ./examples/haproxy.init $Hadir/haproxy
chmod 755 $Hadir/haproxy
sed -i '/^BIN=/cBIN='$Hadir'/sbin/$BASENAME' $Hadir/haproxy
sed -i '/^CFG=/cCFG='$Hadir'/$BASENAME.cfg' $Hadir/haproxy
1.3.3日誌配置
sed -i 's/^#$ModLoad imudp/$ModLoad imudp/g' /etc/rsyslog.conf
sed -i 's/^#$UDPServerRun 514/$UDPServerRun 514/g' /etc/rsyslog.conf
echo 'local0.* /var/log/haproxy.log'>>/etc/rsyslog.conf #添加haproxy日誌路徑
systemctl restart rsyslog
echo "">$Hadir/haproxy.cfg
1.3.4 其餘及防火牆配置
mkdir -p /var/lib/haproxy
#防火牆配置
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=25/tcp
firewall-cmd --permanent --add-port=110/tcp
firewall-cmd --permanent --add-port=143/tcp
firewall-cmd --permanent --add-port=465/tcp
firewall-cmd --permanent --add-port=587/tcp
firewall-cmd --permanent --add-port=993/tcp
firewall-cmd --permanent --add-port=995/tcp
firewall-cmd --permanent --add-port=9000/tcp
systemctl restart firewalld
1.3.5 建立配置文件
echo "
###########全局配置#########
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
daemon
#nbproc 1 #進程數量
maxconn 4096 #最大鏈接數
user haproxy #運行用戶
group haproxy #運行組
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
########默認配置############
defaults
log global
mode http #默認模式{ tcp|http|health }
option httplog #日誌類別,採用httplog
option dontlognull #不記錄健康檢查日誌信息
retries 2 #2次鏈接失敗不可用
option forwardfor #後端服務得到真實ip
option httpclose #請求完畢後主動關閉http通道
option abortonclose #服務器負載很高,自動結束比較久的連接
maxconn 4096 #最大鏈接數
timeout connect 5m #鏈接超時
timeout client 1m #客戶端超時
timeout server 31m #服務器超時
timeout check 10s #心跳檢測超時
balance roundrobin #負載均衡方式,輪詢
#狀態頁面控制
listen stats
bind *:9000 #假裝的端口號
mode http #工做模式
balance #負載模式
stats enable #顯示狀態頁面
stats hide-version #隱藏haproxy的版本號
stats realm HAProxy\ Stats #提示信息
stats auth admin:P@44w0rd #登陸狀態頁面的賬號和密碼
# stats admin if TRUE #狀態頁面出現管理功能
stats uri /haproxy?stats #訪問入口
#轉發配置
# Http 80 負載
frontend ft_exchange_HTTP
bind *:80 name web
maxconn 10000
default_backend bk_exchange_HTTP
backend bk_exchange_HTTP
server Node01 10.101.0.150:80 maxconn 10000 check
server Node02 10.101.0.151:80 maxconn 10000 check backup
# Https 443 負載
frontend ft_exchange_SSL
bind *:443 name ssl
maxconn 10000 #alctl: connection max (depends on capacity)
default_backend bk_exchange_SSL #alctl: default farm to use
backend bk_exchange_SSL
server Node01 10.101.0.150:443 maxconn 10000 check
server Node02 10.101.0.151:443 maxconn 10000 check backup
">$Hadir/haproxy.cfg
------------------------------------------------------------------------
# SMTP 25 負載
frontend ft_exchange_SMTP
bind *:25 name smtp
maxconn 10000
default_backend bk_exchange_SMTP
backend bk_exchange_SMTP
server Node01 10.101.0.150:25 maxconn 10000 check
server Node02 10.101.0.151:25 maxconn 10000 check backup
# SMTPS 465 負載
frontend ft_exchange_SMTP_Secure465
bind *:465 name smtpssl465
maxconn 10000
default_backend bk_exchange_SMTP_Secure465
backend bk_exchange_SMTP_Secure465
server Node01 10.101.0.150:465 maxconn 10000 check
server Node02 10.101.0.151:465 maxconn 10000 check backup
# SMTPS 587 負載
frontend ft_exchange_SMTP_Secure587
bind *:587 name smtpssl587
maxconn 10000
default_backend bk_exchange_SMTP_Secure587
backend bk_exchange_SMTP_Secure587
server Node01 10.101.0.150:587 maxconn 10000 check
server Node02 10.101.0.151:587 maxconn 10000 check backup
# IMTP 143 負載
frontend ft_exchange_IMAP
bind *:143 name imap
maxconn 10000
default_backend bk_exchange_IMAP
backend bk_exchange_IMAP
server Node01 10.101.0.150:143 maxconn 10000 check
server Node02 10.101.0.151:143 maxconn 10000 check backup
# IMTPS 993 負載
frontend ft_exchange_IMAP_Secure
bind *:993 name imapssl
maxconn 10000
default_backend bk_exchange_IMAP_Secure
backend bk_exchange_IMAP_Secure
server Node01 10.101.0.150:993 maxconn 10000 check
server Node02 10.101.0.151:993 maxconn 10000 check backup
# POP3 110 負載
frontend ft_exchange_POP3
bind *:110 name pop3
maxconn 10000
default_backend bk_exchange_POP3
backend bk_exchange_POP3
server Node01 10.101.0.150:110 maxconn 10000 check
server Node02 10.101.0.151:110 maxconn 10000 check backup
# POP3S 995 負載
frontend ft_exchange_POP3_Secure
bind *:995 name pop3ssl
maxconn 10000
default_backend bk_exchange_POP3_Secure
backend bk_exchange_POP3_Secure
server Node01 10.101.0.150:995 maxconn 10000 check
server Node02 10.101.0.151:995 maxconn 10000 check backup
----------------------------------------------------------------------------
1.4 #啓動
/data/haproxy/haproxy start
netstat -antp|grep haproxy
ps -ef|grep haproxy
1.5 #添加自啓動
ln -sf /data/haproxy/haproxy /etc/init.d/haproxy
chkconfig --add haproxy
chkconfig haproxy on
chkconfig --list haproxy
service haproxy restart
1.6 重啓檢查服務狀態:
systemctl status haproxy
ps -A |grep haproxy
firewall-cmd --query-port 443/tcp
firewall-cmd --list-services # 查看開放的服務
firewall-cmd --add-port=3306/tcp # 開放經過tcp訪問3306
firewall-cmd --remove-port=80tcp # 阻止經過tcp訪問3306
firewall-cmd --add-port=233/udp # 開放經過udp訪問233
firewall-cmd --list-ports # 查看開放的端口
1.7 keepalived配置
安裝前環境準備
yum -y install psmisc libnfnetlink-devel curl gcc openssl-devel libnl3-devel net-snmp-devel
1.7.1 下載與安裝
軟件目錄規劃
軟件安裝目錄:/data/keepalived
日誌文件單獨存放在/var/log/keepalived/keepalived.log下
#配置主機名
hostnamectl set-hostname corp-haproxy-01
vi /etc/hosts
# 增長主機地址
172.16.0.222 corp-haproxy-01.localdomain
防火牆放行vrrp組播
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens160 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload
1.7.3開始編譯
1.7.3.1下載源碼包
下載站點:
一、http://www.keepalived.org/download.html
二、http://keepalived.org/software
cd /tmp
curl --progress http://keepalived.org/software/keepalived-2.0.13.tar.gz | tar xz
cd /tmp
wget http://www.keepalived.org/software/keepalived-2.0.15.tar.gz
1.7.3.2 編譯
kldir=/data/keepalived #安裝目錄
mkdir -p $kldir
tar -axf keepalived-* && cd ./keepalived-*
./configure --prefix=$kldir
make && make install
1.7.3.3自啓動腳本
檢查腳本信息是否正確
# cat /usr/lib/systemd/system/keepalived.service
[Unit]
Description=LVS and VRRP High Availability Monitor
After= network-online.target syslog.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
KillMode=process
EnvironmentFile=-/data/keepalived/etc/sysconfig/keepalived
ExecStart=/data/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
!!!!默認的日誌存放位置在/var/log/messages中。
echo 'local3.* /var/log/keepalived/keepalived.log' >>/etc/rsyslog.conf
而後須要修改keepalived.conf
建立默認啓動文件
mkdir -p /etc/keepalived
cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /tmp/keepalived-2.0.15/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/
cp /data/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email { #指定keepalived在發生事情的時候,發送郵件告知,能夠有多個地址,每行一個.
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定發件人
smtp_server 192.168.200.1 #發送email的smtp地址
smtp_connect_timeout 30 #超時時間
router_id Haproxy_MASTER #運行keepalived的機器的一個標識,多個節點標識能夠相同,也能夠不一樣
}
vrrp_script check_haproxy { #killall (安裝 yum install psmisc -y)
script "killall -0 haproxy"
interval 2
weighit 2 #權值腳本成功時(0)等於priority+weghit #不然爲priority
}
vrrp_instance Haproxy_01 {
state MASTER #指定當前節點爲主節點 備用節點上設置爲BACKUP便可
interface ens160 #綁定虛擬IP的網絡接口
mcast_src_ip 172.16.0.222 #本機IP地址
virtual_router_id 51 #VRRP組名,兩個節點的設置必須同樣,以指明各個節點屬於同一VRRP組
priority 100 #主節點的優先級(1-254之間),備用節點必須比主節點優先級低
advert_int 1 #設置主備之間的檢查時間,單位爲s
authentication { #設置驗證信息,兩個節點必須一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虛擬IP, 兩個節點設置必須同樣
172.16.0.220/24 brd 172.16.0.255 dev ens160 label ens160:vip
}
track_script {
check_haproxy
}
smtp_alert #狀態切換,使用郵件通知
}
重啓服務便可。
1.7.3.4 設置開機啓動
systemctl enable keepalived.service
第二臺主機修改:
1.主機名:
hostnamectl set-hostname SD-haproxy02
vi /etc/hosts
修改成第二臺主機地址
10.101.0.154 SD-haproxy02.localdomain
2.修改IP
vi /etc/sysconfig/network-scripts/ifcfg-ens160
修改成第二臺主機地址
IPADDR=10.101.0.154
service network restart
3.修改keepalived配置
vi /etc/keepalived/keepalived.conf
修改以下行
smtp_server 10.101.0.151 #發送email的smtp地址
router_id Haproxy_BACKUP #運行keepalived的機器的一個標識,多個節點標識能夠相同,也能夠不一樣
vrrp_instance Haproxy_BACKUP {
state BACKUP #指定當前節點爲主節點 備用節點上設置爲BACKUP便可
priority 99#主節點的優先級(1-254之間),備用節點必須比主節點優先級低