HaProxy+Keepalived+Mycat高可用群集配置

概述??

本章節主要介紹配置HaProxy+Keepalived高可用群集,Mycat的配置就不在這里做介紹,可以參考我前面寫的幾篇關于Mycat的文章。

?部署圖:

?

配置??

?HaProxy安裝

181和179兩臺服務器安裝haproxy的步驟一致

--創建haproxy用戶
useradd?haproxy--解壓完后進入haproxy目錄
cd?haproxy-1.4.25/--編譯安裝
make?TARGET=linux26?PREFIX=/usr/local/haproxy?ARCH=x86_64make?install?PREFIX=/usr/local/haproxy

HaProxy配置

?

cd?/usr/local/haproxytouch?haproxy.cfgvim?haproxy.cfg


global
log 127.0.0.1 local0 ##記日志的功能
maxconn 4096
chroot /usr/local/haproxy
user haproxy
group haproxy
daemon
defaults
log global
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen admin_stats 192.168.57.180:48800?##統計頁面
stats uri /admin-status?
stats auth admin:admin
mode http
option httplog
listen mycat_service 192.168.57.180:18066 ##客戶端就是通過這個ip和端口進行連接,這個vip和端口綁定的是mycat8066端口
mode tcp
option tcplog
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
balance roundrobin
server mycat_181 192.168.57.181:8066 check port 48700 inter 5s rise 2 fall 3
server mycat_179 192.168.57.179:8066 check port 48700 inter 5s rise 2 fall 3
srvtimeout 20000

listen mycat_admin 192.168.57.180:19066 ##客戶端就是通過這個ip和端口進行連接,這個vip和端口綁定的是mycat9066端口
mode tcp
option tcplog
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
balance roundrobin
server mycat_181 192.168.57.181:9066 check port 48700 inter 5s rise 2 fall 3
server mycat_179 192.168.57.179:9066 check port 48700 inter 5s rise 2 fall 3
srvtimeout 20000

配置haproxy記錄日志功能

yum?–y?install?rsyslogmkdir?/etc/rsyslog.dcd?/etc/rsyslog.d/touch?haproxy.confvim?haproxy.conf

$ModLoad?imudp
$UDPServerRun?514local0.*?/var/log/haproxy.log

vim?/etc/rsyslog.conf

在#### RULES ####上面一行加入以下內容

#?Include?all?config?files?in?/etc/rsyslog.d/$IncludeConfig?/etc/rsyslog.d/*.conf

在local7.* /var/log/boot.log下面加入以下內容

local0.*?/var/log/haproxy.log

?重啟rsyslog服務

service?rsyslog?restart

將rsyslog加入自動啟動服務

chkconfig?--add?rsyslogchkconfig?--level?2345?rsyslog?on

?

配置監聽mycat是否存活

安裝xinetd插件

yum?install?xinetd?-y
cd?etc

service?mycat_status
{
flags?=?REUSE
socket_type?=?stream
port?=?48700wait?=?nouser?=?nobody
server?=/usr/local/bin/mycat_status
log_on_failure?+=?USERID
disable?=?no
}

創建xinetd啟動服務腳本

vim /usr/local/bin/mycat_status

#!/bin/bash
#/usr/local/bin/mycat_status.sh
#?This?script?checks?if?a?mycat?server?is?healthy?running?on?localhost.?It?will
#?return:
#
#?"HTTP/1.x?200?OK\r"?(if?mycat?is?running?smoothly)
#
#?"HTTP/1.x?503?Internal?Server?Error\r"?(else)
mycat=`/usr/local/mycat/bin/mycat?status?|grep?'not?running'|?wc?-l`if?[?"$mycat"?=?"0"?];then/bin/echo?-e?"HTTP/1.1?200?OK\r\n"else/bin/echo?-e?"HTTP/1.1?503?Service?Unavailable\r\n"
fi

修改腳本文件權限

我就是在這里被坑了很久,根據權威指南上面mycat_status這個腳本里面的內容也有很多問題,好幾個地方沒有空格.

chmod?777?/usr/local/bin/mycat_status
chmod?777?/etc/xinetd.d/mycat_status

?

將啟動腳本加入服務

vim /etc/services

在末尾加入

mycat_status?48700/tcp?#?mycat_status

重啟xinetd服務

service?xinetd?restart

將xinetd加入自啟動服務

chkconfig?--add?xinetdchkconfig?--level?2345?xinetd?on

?

頁面測試

http://192.168.57.180:48800/admin-status

由于179還沒有安裝好,所以這里179顯示連接失敗

創建haproxy啟停腳本

啟動腳本

touch?/usr/local/haproxy/sbin/start
chmod?+x?/usr/local/haproxy/sbin/start
vim??/usr/local/haproxy/sbin/start
#!/bin/sh/usr/local/haproxy/sbin/haproxy?-f?/usr/local/haproxy/haproxy.cfg?&

關閉腳本

touch?/usr/local/haproxy/sbin/stop
chmod?+x?/usr/local/haproxy/sbin/stop
vim?/usr/local/haproxy/sbin/stop
#!/bin/sh
ps?-ef?|?grep?sbin/haproxy?|?grep?-v?grep?|awk?'{print?$2}'|xargs?kill?-s?9

授權

chown?-R?haproxy.haproxy?/usr/local/haproxy/*

Keepalived安裝步驟

keepalived的安裝步驟過程在兩臺服務器上除了keepalived.conf配置文件稍微有點區別外其他的地方都一致。

openssl安裝

./config?--prefix=/usr/local/openssl./config?-t
make?depend
make
make?test
make?install
ln?-s?/usr/local/openssl?/usr/local/sslvim?/etc/ld.so.conf

在文件末尾加入以下內容

/usr/local/openssl/lib

修改環境變量

vim?/etc/profile

在文件末尾加入以下內容

export?OPENSSL=/usr/local/openssl/bin
export?PATH=$PATH:$OPENSSL

使環境變量立刻生效

source?/etc/profile

安裝openssl-devel

yum?install?openssl-devel?-y

?

測試

ldd?/usr/local/openssl/bin/openssl
vdso.so.??(?lib64libdl.so.?(?lib64libc.so.?(lib64ldlinuxx86.so.?(
which?openssl
/usr/bin/openssl
openssl?version
OpenSSL?1.0.0-fips?29?Mar?2010

keepalived安裝

./configure?--prefix=/usr/local/keepalivedmake
make?install
cp?/usr/local/keepalived/sbin/keepalived?/usr/sbin/cp?/usr/local/keepalived/etc/sysconfig/keepalived?/etc/sysconfig/cp?/usr/local/keepalived/etc/rc.d/init.d/keepalived?/etc/init.d/mkdir?/etc/keepalived
cd?/etc/keepalived/cp?/usr/local/keepalived/etc/keepalived/keepalived.conf?/etc/keepalived
mkdir?-p??/usr/local/keepalived/var/log

?

創建配置文件和腳本

mkdir?etckeepalivedscriptscd?/etc/keepalived/scripts

vim?/etc/keepalived/keepalived.conf

master

!?Configuration?Fileforkeepalived
vrrp_script?chk_http_port?{
script"/etc/keepalived/scripts/check_haproxy.sh"
interval?2weight?2}
vrrp_instance?VI_1?{
state?MASTER?#192.168.57.179上改為BACKUP
interface?eth0?#對外提供服務的網絡接口
virtual_router_id?51?#VRRP組名,兩個節點的設置必須一樣,以指明各個節點屬于同一VRRP組
priority?150?#數值愈大,優先級越高,backup上改為120
advert_int?1?#同步通知間隔
authentication?{?#包含驗證類型和驗證密碼。類型主要有PASS、AH兩種,通常使用的類型為PASS,據說AH使用時有問題
auth_type?PASS
auth_pass?1111}
track_script?{
chk_http_port?#調用腳本check_haproxy.sh檢查haproxy是否存活
}
virtual_ipaddress?{?#vip地址,haproxy配置的使用的就是這里配置的VIP192.168.57.180?dev?eth0?scope?global
}
notify_master?/etc/keepalived/scripts/haproxy_master.sh
notify_backup?/etc/keepalived/scripts/haproxy_backup.sh
notify_fault?/etc/keepalived/scripts/haproxy_fault.sh
notify_stop?/etc/keepalived/scripts/haproxy_stop.sh
}

backup

!?Configuration?Fileforkeepalived
vrrp_script?chk_http_port?{
script"/etc/keepalived/scripts/check_haproxy.sh"
interval?2weight?2}
vrrp_instance?VI_1?{
state?BACKUP?#192.168.57.179上改為BACKUP
interface?eth0?#對外提供服務的網絡接口
virtual_router_id?51?#VRRP組名,兩個節點的設置必須一樣,以指明各個節點屬于同一VRRP組
priority?120?#數值愈大,優先級越高,backup上改為120
advert_int?1?#同步通知間隔
authentication?{?#包含驗證類型和驗證密碼。類型主要有PASS、AH兩種,通常使用的類型為PASS,據說AH使用時有問題
auth_type?PASS
auth_pass?1111}
track_script?{
chk_http_port?#調用腳本check_haproxy.sh檢查haproxy是否存活
}
virtual_ipaddress?{?#vip地址192.168.57.180?dev?eth0?scope?global
}
notify_master?/etc/keepalived/scripts/haproxy_master.sh
notify_backup?/etc/keepalived/scripts/haproxy_backup.sh
notify_fault?/etc/keepalived/scripts/haproxy_fault.sh
notify_stop?/etc/keepalived/scripts/haproxy_stop.sh
}

vim?/etc/keepalived/scripts/check_haproxy.sh

#!/bin/bash
STARTHAPROXY="/usr/local/haproxy/sbin/haproxy?-f?/usr/local/haproxy/haproxy.cfg"
STOPKEEPALIVED="/etc/init.d/keepalived?stop"
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"
echo?"[check_haproxy?status]"?>>?$LOGFILE
A=`ps?-C?haproxy?--no-header?|wc?-l`echo?"[check_haproxy?status]"?>>?$LOGFILE
date?>>?$LOGFILEif?[?$A?-eq?0?];thenecho?$STARTHAPROXY?>>?$LOGFILE
$STARTHAPROXY?>>?$LOGFILE?2>&1sleep?5
fiif?[?`ps?-C?haproxy?--no-header?|wc?-l`?-eq?0?];thenexit?0elseexit?1fi

vim?/etc/keepalived/scripts/haproxy_master.sh

#!bin`usrlocalhaproxysbinhaproxy?f?usrlocalhaproxy"usrlocalkeepalivedkeepalivedhaproxystate."??$LOGFILE??$LOGFILE??$LOGFILE??$LOGFILE??$LOGFILE??$LOGFILE

vim?/etc/keepalived/scripts/haproxy_backup.sh

#!/bin/bash
STARTHAPROXY=`/usr/local/haproxy/sbin/haproxy?-f?/usr/local/haproxy/haproxy.cfg`
STOPHAPROXY=`ps?-ef?|?grep?sbin/haproxy?|?grep?-v?grep?|?awk?'{print?$2}'|?xargs?kill?-s?9`
LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"
echo?"[backup]"?>>?$LOGFILE
date?>>?$LOGFILE
echo?"Being?backup...."?>>?$LOGFILE?2>&1echo?"stop?haproxy...."?>>?$LOGFILE?2>&1$STOPHAPROXY?>>?$LOGFILE?2>&1echo?"start?haproxy...."?>>?$LOGFILE?2>&1$STARTHAPROXY?>>?$LOGFILE?2>&1echo?"haproxy?stared?..."?>>?$LOGFILE

vim?/etc/keepalived/scripts/haproxy_fault.sh

#!/bin/bash
LOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.logecho?"[fault]"?>>?$LOGFILE
date?>>?$LOGFILE

vim /etc/keepalived/scripts/haproxy_stop.sh

#!/bin/bash
LOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.logecho?"[stop]"?>>?$LOGFILE
date?>>?$LOGFILE

?賦予腳本可執行權限

chmod?777?/etc/keepalived/scripts/*

將keepalived加入自啟動服務

chkconfig?--add?keepalivedchkconfig?--level?2345?keepalived?on--啟動服務service?keepalived?start

?

?

總結??

權威指南上面代碼部分好多處都存在問題,幾乎每一塊代碼都存在問題,有時候往往一個空格需要花很長的時間去找這個問題,所以在代碼方面要細心;特別是復制別人的代碼不要原本照抄最好是檢查一下,除了代碼本身的問題權限有時候也是容易忽略的錯誤,特別是可執行文件要注意是否有可執行權限。

?



本文轉自 Mr_sheng 51CTO博客,原文鏈接:http://blog.51cto.com/sf1314/2073257

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454334.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454334.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454334.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

奇怪的bug,不懂Atom在添加markdown-themeable-pdf,在配置好phantomjs的情況下報錯

本來打算用一下atom但是導出pdf報錯,可是在預覽的情況下就沒有問題,順便吐槽一下谷歌瀏覽器自己的markdown在線預覽插件無法適配,用搜狗搭載谷歌的插件才能導出pdf,一下感覺逼格少了很多,等忙完這陣再來看一下。先貼出…

機器學習之 sklearn.preprocessing 模塊

sklearn.preprocessing.PolynomialFeatures 多項式擴展。 它是使用多項式的方法來進行的,如果有a,b兩個特征,那么它的2次多項式為(1,a,b,a^2,ab, b^2),這個多項式的形式是使用poly的效果。 api class s…

Python 面試題

Python面試315道題第一部 Python面試題基礎篇(80道)1、為什么學習Python?2、通過什么途徑學習的Python?3、Python和Java、PHP、C、C#、C等其他語言的對比?PHPjavacc#c4、簡述解釋型和編譯型編程語言?編譯型…

周鴻祎,高司令

還是感到有必要將自己的一些想法快速記下來。 首先是對周鴻祎新員工演講的看法。 就說實話這一點來說,周鴻祎比很多人強。所以我比較喜歡引用他的話,確實比較實在,不裝逼。 至于一個公司招人的風格,是公司自己定的,別人…

JDBC與JNDI應用比較

JNDI用了多年但是一直沒去弄懂其和JDBC的區別,今天在網上搜了下,發下些資料說明的還不錯記錄下。 JNDI是 Java 命名與目錄接口(Java Naming and Directory Interface),在J2EE規范中是重要的規范之一,不少專…

bzoj1038500AC!

序列dp 先開始想了一個類似區間dp的東西...少了一維 然后發現似乎不太對,因為女生的最大差和男生的最大差并不相等 dp[i][j][x][y]表示當前有i個人,j個男生,男生和女生的后綴最大差是x,女生和男生最大差是y,x,y>0,轉…

機器學習接口代碼之 Ridge、Lasso、Elasitc Net

目錄 Ridge Regression (嶺回歸) Lasso Regression Elasitc Net(彈性網絡) 案例:葡萄酒質量預測 官網地址https://scikit-learn.org/stable/modules/linear_model.html Ridge Regression (嶺回歸&…

公司技術管理角度看C++游戲程序員發展

公司技術管理角度看C游戲程序員發展 H3D 這是我多年來招聘培訓游戲程序員的一點想法。一直想匯總一下。主要目的是為了更好的對公司新進C程序員進行培訓,并且建立起游戲程序員培訓,發展,成才,成為核心骨干,管理層&am…

android生命周期_Android開發 View的生命周期結合代碼詳解

咱們以TextView控件為例:/*** Created by SunshineBoy on 2020/9/23.*/public class TestTextView extends android.support.v7.widget.AppCompatTextView {public TestTextView(Context context) {super(context);Log.e("TestTextView","TestTextVi…

salt

安裝服務端和客戶端服務端(marster)yum install salt-master -y客戶端(slave)yum install salt-minion -ymarster192.168.11.17/etc/init.d/salt-master start配置文件: vi /etc/salt/mastercat master|egrep -v ;|#|^$auto_accept:True #設置自動接受日志: /var/log/salt/mas…

python | 查看pip支持的文件名和版本

python | 查看pip支持的文件名和版本win下查詢大哥推薦已經解決win下查詢 import pip._internalprint(pip._internal.pep425tags.get_supported())64位的需要在pip后面加個_internal 如果不行試試下邊的 大哥推薦已經解決 import wheel.pep425tags as w print(w.get_suppor…

機器學習算法之支持向量機 SVM

距離知識 點到直線/平面的距離公式: 1、假定點p(x0,y0),平面方程為f(x,y)AxByC,那么點p到平面f(x)的距離為: 2、從三維空間擴展到多維空間中,如果存在一個超平面f(X)θXb; 那么某一個點X0到這個超平面的距離為: 參考…

set IDENTITY_INSERT on 和 off 的設置

批量插入記錄時,對有標識列的字段要設置 set IDENTITY_INSERT 表名 on,然后再執行插入記錄操作;插入完畢后恢復為 off 設置 轉載于:https://www.cnblogs.com/TTonly/p/10349931.html

VMware Horizon虛擬桌面工具箱2.0-審計,遠程協助,控制臺,電源

各位朋友,大家好,VMware Horizon 虛擬桌面工具箱2.0版本,已經面世啦!在2.0 版本中我們添加了vSphere虛擬機控制臺訪問、開機策略和圖形化安裝這三個新功能,并改進了部分老的功能。老版本即1.5版本的相關知識可以參考我的博文VMware Horizon虛擬桌面工具箱之審計與遠…

python詞云改顏色_一種用Python生成詞云

一種用Python生成詞云 我們在閱讀一篇很長的文章時,總先看看文章的關鍵詞來獲知文章的大概內容。今天我們就來制作一個詞云程序,將文章中出現次數較多的詞語提取出來,生成一張詞云圖。詞云圖的生成原理: 程序會將這篇文章中的所有…

什么是程序員正確的職場心態?

(本文為《程序員羊皮卷》最新公布的第七章的一部分,下載地址:http://download.csdn.net/source/1868065 或者http://zhaopinpro.com/wordpress/wp-content/uploads/2009/12/《程序員羊皮卷》第7章-程序員職場心態.doc 歡迎大家購買作者簽名…

git第一次提交代碼至遠程倉庫步驟

git第一次提交代碼至遠程倉庫步驟在將要提交的文件目錄下打開Git Bash Here1.git init git add . 提交該目錄下的所有文件 3.git commit -am “qiantai”(提交到本地倉庫) 4.git remote add origin *** (***git地址) 5.git push -u -f origin master(提交到遠程倉庫&#x…

機器學習之 樸素貝葉斯、貝葉斯網絡

目錄 貝葉斯定理 樸素貝葉斯算法 高斯樸素貝葉斯 伯努利樸素貝葉斯 多項式樸素貝葉斯 貝葉斯網絡 最簡單的貝葉斯網絡 全連接貝葉斯網絡 一般化的貝葉斯網絡 引子 參賽者會看見三扇關閉了的門,其中一扇的后面有一輛汽車,選中后面有車的那扇門可…

liunx -bash:ls:command not found,執行命令總是報找不到

解決辦法: 使用絕對命令vi打開profile /bin/vi /etc/profile 添加: export PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 簡便方法: 直接執行 export PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin export PA…

Nginx的Web管理界面收集

Nginx實在是太強大了!灰度發布、金絲雀發布、負載均衡就只需要簡單的幾行配置就可以實現,這些特性嗾使微軟無法比擬的。 原來Nginx除了使用ngx_http_stub_status_module模塊(http://127.0.0.1/ngx_status)實現Web頁面上的監控外&a…