網上有很多關于pos機域名不可用,想學會MyCat高可用集群搭建的知識,也有很多人為大家解答關于pos機域名不可用的問題,今天pos機之家(www.chinaclyc.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機域名不可用
一、集群架構1.MyCat實現讀寫分離架構在我前面的文章, 我已經講解過了通過MyCat來實現MySQL的讀寫分離, 從而完成MySQL集群的負載均衡 , 如下面的結構圖:
但是以上架構存在問題 , 由于MyCat中間件是單節點的服務, 前端客戶端所有的壓力過來都直接請求這一臺MyCat , 存在單點故障。所以這個時候, 我們就需要考慮MyCat的集群 ;
2.MyCat集群架構通過MyCat來實現后端MySQL的負載均衡 , 通過HAProxy再實現MyCat集群的負載均衡 ;
HAProxy 負責將請求分發到 MyCat 上,起到負載均衡的作用,同時 HAProxy 也能檢測到 MyCat是否存活,HAProxy 只會將請求轉發到存活的 MyCat 上。如果一臺 MyCat 服務器宕機,HAPorxy 轉發請求時不會轉發到宕機的 MyCat 上,所以 MyCat 依然可用。
HAProxy介紹:
HAProxy 是一個開源的、高性能的基于TCP(第四層)和HTTP(第七層)應用的負載均衡軟件。 使用 HAProxy可以快速、可靠地實現基于TCP與HTTP應用的負載均衡解決方案。
具有以下優點:
可靠性和穩定性好, 可以與硬件級的F5負載均衡服務器媲美 ;處理能力強, 最高可以通過維護4w-5w個并發連接, 單位時間處理的最大請求數達到2w個 ;支持多種負載均衡算法 ;有功能強大的監控界面, 通過此頁面可以實時了解系統的運行情況 ;但是, 上述的架構也是存在問題的, 因為所以的客戶端請求都是先到達HAProxy, 由HAProxy再將請求再向下分發, 如果HAProxy宕機的話, 就會造成整個MyCat集群不能正常運行, 依然存在單點故障。
3.MyCat的高可用集群圖解說明:
HAProxy 實現了 MyCat 多節點的集群高可用和負載均衡,而 HAProxy 自身的高可用則可以通過Keepalived 來實現。因此,HAProxy 主機上要同時安裝 HAProxy 和 Keepalived,Keepalived 負責為該服務器搶占 vip(虛擬 ip),搶占到 vip 后,對該主機的訪問可以通過原來的 ip訪問,也可以直接通過 vip訪問。Keepalived 搶占 vip 有優先級,在 keepalived.conf 配置中的 priority 屬性決定。但是一般哪臺主機上的Keepalived服務先啟動就會搶占到vip,即使是slave,只要先啟動也能搶到(要注意避免Keepalived的資源搶占問題)。HAProxy 負責將對 vip 的請求分發到 MyCat 集群節點上,起到負載均衡的作用。同時 HAProxy 也能檢測到 MyCat 是否存活,HAProxy 只會將請求轉發到存活的 MyCat 上。如果 Keepalived+HAProxy 高可用集群中的一臺服務器宕機,集群中另外一臺服務器上的 Keepalived 會立刻搶占 vip 并接管服務,此時搶占了 vip 的 HAProxy 節點可以繼續提供服務。如果一臺 MyCat 服務器宕機,HAPorxy 轉發請求時不會轉發到宕機的 MyCat 上,所以 MyCat 依然可用。綜上:MyCat 的高可用及負載均衡由 HAProxy 來實現,而 HAProxy 的高可用,由 Keepalived 來實現。
keepalived介紹:
Keepalived是一種基于VRRP協議來實現的高可用方案,可以利用其來避免單點故障。 通常有兩臺甚至多臺服務器運行Keepalived,一臺為主服務器(Master), 其他為備份服務器, 但是對外表現為一個虛擬IP(VIP), 主服務器會發送特定的消息給備份服務器, 當備份服務器接收不到這個消息時, 即認為主服務器宕機, 備份服務器就會接管虛擬IP, 繼續提供服務, 從而保證了整個集群的高可用。VRRP(虛擬路由冗余協議-Virtual Router Redundancy Protocol)協議是用于實現路由器冗余的協議,VRRP 協議將兩臺或多臺路由器設備虛擬成一個設備,對外提供虛擬路由器 IP(一個或多個),而在路由器組內部,如果實際擁有這個對外 IP 的路由器如果工作正常的話就是 MASTER,或者是通過算法選舉產生。MASTER 實現針對虛擬路由器 IP 的各種網絡功能,如 ARP 請求,ICMP,以及數據的轉發等;其他設備不擁有該虛擬 IP,狀態是 BACKUP,除了接收 MASTER 的 VRRP 狀態通告信息外,不執行對外的網絡功能。當主機失效時,BACKUP 將接管原先 MASTER 的網絡功能。VRRP 協議使用多播數據來傳輸 VRRP 數據,VRRP 數據使用特殊的虛擬源 MAC 地址發送數據而不是自身網卡的 MAC 地址,VRRP 運行時只有 MASTER 路由器定時發送 VRRP 通告信息,表示 MASTER 工作正常以及虛擬路由器 IP(組),BACKUP 只接收 VRRP 數據,不發送數據,如果一定時間內沒有接收到 MASTER 的通告信息,各 BACKUP 將宣告自己成為 MASTER,發送通告信息,重新進行 MASTER 選舉狀態。
二、高可用集群搭建1.部署環境規劃2.MySQL主從復制搭建A.master在master 的配置文件(/usr/my.cnf)中,配置如下內容:#mysql 服務ID,保證整個集群環境中唯一 server-id=1 #mysql binlog 日志的存儲路徑和文件名 log-bin=/var/lib/mysql/mysqlbin #設置logbin格式 binlog_format=STATEMENT #是否只讀,1 代表只讀, 0 代表讀寫 read-only=0 #指定同步的數據庫 binlog-do-db=db01 binlog-do-db=db02 binlog-do-db=db03123456789101112執行完畢之后,需要重啟Mysql:
service mysql restart ;1創建同步數據的賬戶,并且進行授權操作:
grant replication slave on *.* to 'itcast'@'%' identified by 'itcast'; flush privileges;123查看master狀態:
show master status;1
字段含義:
File : 從哪個日志文件開始推送日志文件 Position : 從哪個位置開始推送日志 Binlog_Do_DB : 指定需要同步的數據庫123B.slave在 slave 端配置文件中,配置如下內容:
#mysql服務端ID,唯一 server-id=2 #指定binlog日志 log-bin=/var/lib/mysql/mysqlbin #啟用中繼日志 relay-log=mysql-relay123456執行完畢之后,需要重啟Mysql:
service mysql restart;1執行如下指令 :
change master to master_host= '192.168.192.157', master_user='itcast', master_password='itcast', master_log_file='mysqlbin.000002', master_log_pos=120;1
指定當前從庫對應的主庫的IP地址,用戶名,密碼,從哪個日志文件開始的那個位置開始同步推送日志。
開啟同步操作start slave; show slave status;12停止同步操作
stop slave;1C.測試驗證
create database db01; user db01; create table user( id int(11) not null auto_increment, name varchar(50) not null, sex varchar(1), primary key (id) )engine=innodb default charset=utf8; insert into user(id,name,sex) values(null,'Tom','1'); insert into user(id,name,sex) values(null,'Trigger','0'); insert into user(id,name,sex) values(null,'Dawn','1');12345678910111213143.MyCat安裝配置A.schema.xml
<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="ITCAST" checkSQLschema="true" sqlMaxLimit="100"> <table name="user" dataNode="dn1" primaryKey="id"/> </schema> <dataNode name="dn1" dataHost="localhost1" database="db01" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.192.157:3306" user="root" password="itcast"> <readHost host="hostS1" url="192.168.192.158:3306" user="root" password="itcast" /> </writeHost> </dataHost> </mycat:schema>1234567891011121314B.server.xml
<user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">ITCAST</property> </user> <user name="test"> <property name="password">123456</property> <property name="schemas">ITCAST</property> </user>123456789
兩臺MyCat服務, 做相同的配置 ;
4.HAProxy安裝配置A.安裝準備好HAProxy安裝包,傳到/root目錄下haproxy-1.5.16.tar.gz1解壓到/usr/local/src目錄下
tar -zxvf haproxy-1.5.16.tar.gz -C /usr/local/src1進入解壓后的目錄,查看內核版本,進行編譯
cd /usr/local/src/haproxy-1.5.16 uname -r make TARGET=linux2632 PREFIX=/usr/local/haproxy ARCH=x86_64 # TARGET=linux310,內核版本,使用uname -r查看內核,如:2.6.32-431.el6.x86_64,此時該參數就為linux2632; # ARCH=x86_64,系統位數; # PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,為haprpxy安裝路徑。1234567編譯完成后,進行安裝
make install PREFIX=/usr/local/haproxy1安裝完成后,創建目錄
mkdir -p /usr/data/haproxy/1創建HAProxy配置文件
vim /usr/local/haproxy/haproxy.conf
globallog 127.0.0.1 local0 maxconn 4096 chroot /usr/local/haproxy pidfile /usr/data/haproxy/haproxy.piduid 99 gid 99 daemon node mysql-haproxy-01 description mysql-haproxy-01 defaults log global mode tcp option abortonclose option redispatch retries 3 maxconn 2000 timeout connect 50000ms timeout client 50000ms timeout server 50000ms listen proxy_status bind 0.0.0.0:48066 mode tcp balance roundrobin server mycat_1 192.168.192.157:8066 check server mycat_2 192.168.192.158:8066 check frontend admin_stats bind 0.0.0.0:8888 mode http stats enable option httplog maxconn 10 stats refresh 30s stats uri /admin stats auth admin:123123 stats hide-version stats admin if TRUE12345678910111213141516171819202122232425262728293031323334353637
內容解析如下 :
#global 配置中的參數為進程級別的參數,通常與其運行的操作系統有關global#定義全局的syslog服務器, 最多可定義2個; local0 是日志設備, 對應于/etc/rsyslog.conf中 的配置 , 默認收集info級別日志 log 127.0.0.1 local0 #log 127.0.0.1 local1 notice #log loghost local0 info #設定每個haproxy進程所接受的最大并發連接數 ; maxconn 4096 #修改HAproxy工作目錄至指定的目錄并在放棄權限之前執行chroot操作, 可以提升haproxy的安全級別 chroot /usr/local/haproxy #進程ID保存文件 pidfile /usr/data/haproxy/haproxy.pid #指定用戶ID uid 99 #指定組ID gid 99 #設置HAproxy以守護進程方式運行 daemon #debug #quiet node mysql-haproxy-01 ## 定義當前節點的名稱,用于 HA 場景中多 haproxy 進程共享同一 個 IP 地址時 description mysql-haproxy-01 ## 當前實例的描述信息 #defaults:用于為所有其他配置段提供默認參數,這默認配置參數可由下一個"defaults"所重新設定 defaults #繼承global中的log定義 log global #所使用的處理模式(tcp:四層 , http:七層, health:狀態檢查,只返回OK) ### tcp: 實例運行于純 tcp 模式,在客戶端和服務器端之間將建立一個全雙工的連接,且不會對 7 層報文做任何類型的檢查,此為默認模式 ### http:實例運行于 http 模式,客戶端請求在轉發至后端服務器之前將被深度分析,所有不與 RFC 模式兼容的請求都會被拒絕 ### health:實例運行于 health 模式,其對入站請求僅響應“OK”信息并關閉連接,且不會記錄任 何日志信息 ,此模式將用于相應外部組件的監控狀態檢測請求 mode tcp#當服務器負載很高的時候,自動結束掉當前隊列處理時間比較長的連接 option abortonclose #當使用了cookie時,haproxy將會將請求的后端服務器的serverID插入到cookie中,以保證會話的 session持久性,而此時,后端服務器宕機,但是客戶端的cookie不會刷新,設置此參數,將會將客戶請求 強制定向到另外一個后端server上,以保證服務的正常。 option redispatch retries 3 # 前端的最大并發連接數(默認為 2000) maxconn 2000 # 連接超時(默認是毫秒,單位可以設置 us,ms,s,m,h,d) timeout connect 5000 # 客戶端超時時間 timeout client 50000 # 服務器超時時間 timeout server 50000 #listen: 用于定義通過關聯“前端”和“后端”一個完整的代理,通常只對 TCP 流量有用 listen proxy_status bind 0.0.0.0:48066 # 綁定端口 mode tcp balance roundrobin # 定義負載均衡算法,可用于"defaults"、"listen"和"backend"中,默認為輪詢 #格式: server <name> <address> [:[port]] [param*] # weight : 權重,默認為 1,最大值為 256,0 表示不參與負載均衡 # backup : 設定為備用服務器,僅在負載均衡場景中的其他 server 均不可以啟用此 server # check : 啟動對此 server 執行監控狀態檢查,其可以借助于額外的其他參數完成更精細的設定 # inter : 設定監控狀態檢查的時間間隔,單位為毫秒,默認為 2000,也可以使用 fastinter 和 downinter 來根據服務器端專題優化此事件延遲 # rise : 設置 server 從離線狀態轉換至正常狀態需要檢查的次數(不設置的情況下,默認值為 2) # fall : 設置 server 從正常狀態轉換至離線狀態需要檢查的次數(不設置的情況下,默認值為 3) # cookie : 為指定 server 設定 cookie 值,此處指定的值將會在請求入站時被檢查,第一次為此值挑選的 server 將會被后續的請求所選中,其目的在于實現持久連接的功能# maxconn: 指定此服務器接受的最大并發連接數,如果發往此服務器的連接數目高于此處指定的值,其將被放置于請求隊列,以等待其他連接被釋放 server mycat_1 192.168.192.157:8066 check inter 10s server mycat_2 192.168.192.158:8066 check inter 10s # 用來匹配接收客戶所請求的域名,uri等,并針對不同的匹配,做不同的請求處理 # HAProxy 的狀態信息統計頁面 frontend admin_stats bind 0.0.0.0:8888 mode http stats enable option httplog maxconn 10 stats refresh 30s stats uri /admin stats auth admin:123123 stats hide-version stats admin if TRUE1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
HAProxy的負載均衡策略:
B.啟動訪問啟動HAProxy/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf1查看HAProxy進程
ps -ef|grep haproxy1訪問
http://192.168.192.162:8888/admin
界面:
5.Keepalived安裝配置A.安裝配置上傳安裝包到Linuxalt + p --------> put D:/tmp/keepalived-1.4.5.tar.gz1解壓安裝包到目錄 /usr/local/src
tar -zxvf keepalived-1.4.5.tar.gz -C /usr/local/src1安裝依賴插件
yum install -y gcc openssl-devel popt-devel1進入解壓后的目錄,進行配置,進行編譯
cd /usr/local/src/keepalived-1.4.5 ./configure --prefix=/usr/local/keepalived123進行編譯,完成后進行安裝
make && make install1運行前配置
cp /usr/local/src/keepalived-1.4.5/keepalived/etc/init.d/keepalived /etc/init.d/ mkdir /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/src/keepalived-1.4.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/12345修改配置文件 /etc/keepalived/keepalived.conf
Master:
global_defs { notification_email { javadct@163.com }notification_email_from keepalived@showjoy.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id haproxy01 vrrp_skip_check_adv_addr vrrp_garp_interval 0 vrrp_gna_interval 0 }vrrp_script chk_haproxy { script "/etc/keepalived/haproxy_check.sh"interval 2 weight 2 }vrrp_instance VI_1 { #主機配MASTER,備機配BACKUP state MASTER #所在機器網卡 interface eth1 virtual_router_id 51 #數值越大優先級越高 priority 120 advert_int 1 authentication { auth_type PASS auth_pass 1111 }## 將 track_script 塊加入 instance 配置塊 track_script { chk_haproxy ## 檢查 HAProxy 服務是否存活 }virtual_ipaddress { #虛擬IP 192.168.192.200 } }1234567891011121314151617181920212223242526272829303132333435363738394041
BackUP:
global_defs { notification_email { javadct@163.com }notification_email_from keepalived@showjoy.com smtp_server 127.0.0.1 smtp_connect_timeout 30#標識本節點 router_id haproxy02 vrrp_skip_check_adv_addr vrrp_garp_interval 0 vrrp_gna_interval 0 }# keepalived 會定時執行腳本并對腳本執行的結果進行分析,動態調整 vrrp_instance 的優先級 vrrp_script chk_haproxy { # 檢測 haproxy 狀態的腳本路徑 script "/etc/keepalived/haproxy_check.sh" #檢測時間間隔 interval 2 #如果條件成立,權重+2 weight 2 }vrrp_instance VI_1 { #主機配MASTER,備機配BACKUP state BACKUP #所在機器網卡 interface eth1 virtual_router_id 51 #數值越大優先級越高 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 }## 將 track_script 塊加入 instance 配置塊 track_script { chk_haproxy ## 檢查 HAProxy 服務是否存活 }virtual_ipaddress { #虛擬IP 192.168.192.200} }123456789101112131415161718192021222324252627282930313233343536373839404142434445編寫檢測haproxy的shell腳本 haproxy_check.sh
#!/bin/bash A=`ps -C haproxy --no-header | wc -l` if [ $A -eq 0 ];then /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf echo "haproxy restart ..." &> /dev/null sleep 1 if [ `ps -C haproxy --no-header | wc -l` -eq 0 ];then /etc/init.d/keepalived stop echo "stop keepalived" &> /dev/null fi fi123456789101112131415161718192021B.啟動測試啟動Keepalived
service keepalived start1登錄驗證
mysql -uroot -p123456 -h 192.168.192.200 -P 480661
以上就是關于pos機域名不可用,想學會MyCat高可用集群搭建的知識,后面我們會繼續為大家整理關于pos機域名不可用的知識,希望能夠幫助到大家!
