haproxy+keepalived负载均衡之主备切换(centos)
调试通过) 复制代码 代码如下: #!/usr/bin/python #coding: utf-8 from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText from email.MIMEImage import MIMEImage from email.Header import Header import sys import smtplib #------------------------------- # file: mailnotify.py # desc: send notify email # #------------------------------- strFrom = '[email protected]' strTo = '[email protected]' smtp_server = 'smtp.sina.com' smtp_user = 'toplover' smtp_pass = 'xxx***xxx' if sys.argv[1] != master and sys.argv[1] != backup and sys.argv[1] != fault: sys.exit() else: notify_type = sys.argv[1] mail_title = [crt] Haproxy-notify-info mail_body_plain = notify_type + 'alive, 不明之处请参阅haproxy官方cofiguration.txt文件及keepalived官方文档,下载安装,please check it now' msgRoot = MIMEMultipart('related') msgRoot['Subject'] = Header(mail_title,'utf-8') msgRoot['From'] = strFrom msgRoot['To'] = strTo msgAlternative = MIMEMultipart('alternative') msgRoot.attach(msgAlternative) msgText = MIMEText(mail_body_plain, check it with 'haproxy check'. return 1 fi stop start } # check haproxy check() { /usr/local/haproxy/sbin/haproxy -c -q -V -f /usr/local/haproxy/conf/haproxy.cfg } # rsstatus rhstatus() { status haproxy } # condrestart condrestart() { [ -e /var/lock/subsys/haproxy ] restart || : } # See how we were called. case $1 in start) start ;; stop) stop ;; restart) restart ;; reload) restart ;; condrestart) condrestart ;; status) rhstatus ;; check) check ;; *) echo $Usage: haproxy {start|stop|restart|reload|condrestart|status|check} RETVAL esac exit $RETVAL 三、keepalived配置文件 Master的配置文件: 复制代码 代码如下: ! Configuration File for keepalived global_defs { router_id LVS_1 } vrrp_script chk_haproxy { script /etc/keepalived/check_haproxy.sh interval 2 weight 2 } vrrp_instance VI_1 { state MASTER priority 99 advert_int 1 virtual_router_id 50 garp_master_delay 1 interface eth0 authentication { auth_type PASS auth_pass Kxiaokk345Pix } track_interface { eth0 } virtual_ipaddress { 192.168.1.100 } track_script { chk_haproxy } notify_master /etc/keepalived/mailnotify.py master notify_backup /etc/keepalived/mailnotify.py backup notify_fault /etc/keepalived/mailnotify.py fault } Slave的配置文件 复制代码 代码如下: ! Configuration File for keepalived global_defs { router_id LVS_2 } vrrp_script chk_haproxy { script /etc/keepalived/check_haproxy.sh interval 5 weight 2 } vrrp_instance VI_1 { state BACKUP priority 96 advert_int 1 virtual_router_id 50 garp_master_delay 1 interface eth0 authentication { auth_type PASS auth_pass Kxiaokk345Pix } track_interface { eth0 } virtual_ipaddress { 192.168.1.100 } track_script { chk_haproxy } notify_master /etc/keepalived/mailnotify.py master notify_backup /etc/keepalived/mailnotify.py backup notify_fault /etc/keepalived/mailnotify.py fault } ###### --- haproxy存活状态检测脚本 复制代码 代码如下: #!/bin/bash # # desc: check haproxy service # A=`ip address show eth0 | grep 192.168.1.100 | wc -l` B=`ps -C haproxy --no-heading | wc -l` if [ $A -eq 1 ]; then if [ $B -eq 0 ]; then /usr/local/haproxy/haproxy.sh start sleep 3 fi fi ######----主备切换时邮件提醒程序(此程序源自litus, 2004 ipvsadm-1.24-3.src.rpm (for 1.1.8 or later) - December 20, 'utf-8') msgAlternative.attach(msgText) smtp = smtplib.SMTP() smtp.connect(smtp_server) smtp.login(smtp_user, 2004 ipvsadm-1.24-4.src.rpm (for 1.1.8 or later) - January 10, 配置 (1): cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ ln -s /usr/local/sbin/keepalived /usr/sbin/ service keepalived start 如果安装时的编译参数为: ./configure --prefix=/usr/local/keepalived 则操作步骤如下: cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/ service keepalived start 以下为详细的配置文件 二、haproxy (1)、haproxy配置文件 haproxy.cfg 复制代码 代码如下: global daemon chroot /usr/local/haproxy maxconn 256 user haproxy group haproxy log-send-hostname xiaokk.com log-tag my_xiaokk nbproc 1 pidfile /var/run/haproxy.pid log 127.0.0.1 local0 info defaults maxconn 256 mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms timeout check 2000 retries 3 option httpclose option httplog option dontlognull option forwardfor option redispatch option abortonclose frontend http-www bind 192.168.1.100:80 acl ha_policy hdr_reg(host) -i ^(|test-haproxy.com|demo.test-haproxy.com|) acl ha_baby hdr_dom(host) -i hellobaby.com use_backend ha_www if ha_policy use_backend ha_www if ha_baby log 127.0.0.1 local0 info listen admin_status bind 192.168.1.100:1080 mode http log 127.0.0.1 local0 info stats uri /admin?status stats refresh 30s stats realm Haproxy\ Admin\ Center stats auth admin:admin stats hide-version backend ha_www mode http balance source cookie SERVERID option httpchk HEAD /index.html server w1 192.168.1.235:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1 server w2 192.168.1.236:85 cookie 1 check inter 1500 rise 3 fall 3 weight 2 (2)、haproxy启却脚本 haproxy.sh 复制代码 代码如下: #!/bin/sh # # chkconfig: - 85 15 # description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly \ # suited for high availability environments. # # processname: haproxy # config: /usr/local/haproxy/conf/haproxy.cfg # pidfile: /var/run/haproyx.pid # # Source function library. if [ -f /etc/init.d/functions ]; then . /etc/init.d/functions elif [ -f /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions else exit 0 fi # Source networking configuration. . /etc/sysconfig/network # Check that networking is up [ ${NETWORKING} = no ] exit 0 [ -f /usr/local/haproxy/conf/haproxy.cfg ] || exit 1 RETVAL=0 # start Haproxy start() { /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg if [ $? -ne 0 ]; then echo Errors found in configuration file. return 1 fi echo -n Starting Haproxy: daemon /usr/local/haproxy/sbin/haproxy -D -f /usr/local/haproxy/conf/haproxy.cfg -p /var/run/haproxy.pid RETVAL=$? echo [ $RETVAL -eq 0 ] touch /var/lock/subsys/haproxy return $RETVAL } # stop Haproxy stop() { echo -n Shutting down Haproxy: killproc haproxy -USR1 RETVAL=$? echo [ $RETVAL -eq 0 ] rm -f /var/lock/subsys/haproxy [ $RETVAL -eq 0 ] rm -f /var/run/haproxy.pid return $RETVAL } # restart Haproxy restart() { /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg if [ $? -ne 0 ]; then echo ERR found in configuration file, 2.6.18 适用于1.24的各个版本 ipvsadm-1.24-6.src.rpm (for kernel between 2.6.10 and 2.6.27.4) - December 10,有小改动,不同版本内核适用的ipvs版本不一样。
msgRoot.as_string()) smtp.quit() 到此完成了简单的haproxy+keepalived负载均衡主从热备功能, tar zxvf keepalived-1.2.2.tar.gz cd keepalived-1.2.2 ./configure make make install 安装完毕, 'html',please check it now' mail_body_html = 'bfont color=red' + notify_type + 'alive, tar zxvf ipvsadm-1.24.tar.gz cd ipvsadm-1.24 make make install 第三步, 'plain', 环境描述: VIP: 192.168.1.100 Master: 192.168.1.238 Slave: 192.168.1.239 真实IP: RIP1: 192.168.1.235 RIP2: 192.168.1.236 以下为安装步骤 第一步:安装haproxy 下载 #tar zxvf haproxy-1.4.18.tar.gz #make TARGET=linux26 #make install 第二步:安装ipvs 根据ipvs官网介绍, 2005 安装之前。
'utf-8') msgAlternative.attach(msgText) msgText = MIMEText(mail_body_html, ,软连接系统内核目录 ln -s /usr/src/kernels/2.6.18-194.11.3.el5-i686/ /usr/src/linux 查看系统当前的内核版本: uname -r 2.6.18-164.el5 有时你找不到这个内核的路径, 2005 ipvsadm-1.24-5.src.rpm (for 1.2.0 or later) - October 27,安装keepalived 从上下载最新的keepalived-1.2.2.tar.gz, strTo,smtp_pass) smtp.sendmail(strFrom, 2003 ipvsadm-1.24.tar.gz - December 10,系统安装后并没有kernerls的目录 解决方法:yum install kernel-devel 接下来在进行连接 编译 就ok了! 我们使用最新的 ipvsadm-1.24.tar.gz,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/shell/10662.shtml
相关文章
热门TAG
命令 权重 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 服务器 网站流量 实例解析 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows SEO优化 蜘蛛 搜索引擎 网站收录 JSP最新文章
-
Centos下PHP5升级为PHP7的方法
时间:2021-01-03
-
在php当中常量和变量的区
时间:2020-12-29
-
PHP中经典的四大排序算法
时间:2020-12-29
-
dw怎么运行php文件?
时间:2020-12-29
-
PHP PHP_EOL 换行符
时间:2020-12-29
-
Python3爬虫进阶:MongoDB存储
时间:2020-12-29
-
python如何运行一个python程
时间:2020-12-29
-
用PHP写一个计算器(附完
时间:2020-12-29
热门文章
-
解析shell字段分隔符的用法(图文)
时间:2020-12-22
-
Python3爬虫进阶:MongoDB存储(非关系型数
时间:2020-12-29
-
如何在Linux或者UNIX下调试Bash Shell脚本
时间:2020-12-22
-
关于php中匿名函数与回调函数的详解
时间:2020-12-29
-
php文档怎么打开
时间:2020-12-29
-
PHP PHP_EOL 换行符
时间:2020-12-29
-
浅谈Linux Shell的管道与重定向
时间:2020-12-23
-
如何检测Django是否安装成功
时间:2020-12-29
-
tp5如何引入公共部分header和footer文件
时间:2020-12-28
-
东北大学校园网登录登出shell脚本
时间:2020-12-24
