1. 程式人生 > >運維筆記33 (haproxy的配置,pacemaker高可用+haproxy)

運維筆記33 (haproxy的配置,pacemaker高可用+haproxy)

概述:之前的部落格中提到的一種負載均衡方式是lvs,lvs的配置簡單,減少了認為出錯的概率,而且軟體處在tcp/ip協議棧的第四層,可以對各種web應用服務,但是因為本身不支援正則表示式處理,不能做動靜分離。那麼今天的haproxy的優勢就體現出來了,能夠支援虛擬機器主機,並且實現了動靜分離,url重定向等等大型網站需要的功能。

系統環境:Red Hat Enterprise Linux Server release 6.5 (Santiago)
核心版本:2.6.32-431.el6.x86_64

一.haproxy對http服務的負載均衡

拓撲圖:
叢集拓撲

1 直接通過yum安裝haproxy
[

[email protected] ~]# yum install haproxy -y
2 配置檔案修改/etc/haproxy/haproxy.cfg

listen mo *:80 #定義haproxy的埠
    balance     roundrobin   #排程演算法
    server      static 172.25.3.102 check #定義real server1
    server      static 172.25.3.103 check #定義real server2

3 啟動haproxy,和realserver的服務

[root@ha1
~]# /etc/init.d/haproxy start Starting haproxy: [ OK ]

4 觀察現象
為了使現象明顯,最好將兩個real server上/var/www/html下的index.html檔案修改成不同的,這樣才能看出在兩臺機器上排程。

[root@foundation3 ~]# curl 172.25.3.100
rserver1
[root@foundation3 ~]# curl 172.25.3.100
rserver2
[root@foundation3 ~]# curl 172.25.3.100
rserver1 [root@foundation3 ~]# curl 172.25.3.100 rserver2

二 新增haproxy的監控介面

配置檔案修改如下:

listen stats_auth *:8000
        stats enable
        stats uri /status
        stats auth admin:momo  #定義登陸的賬號和密碼
        stats refresh 5s       #定義監控資料每次重新整理的時間

效果:
這裡寫圖片描述

三 定義haproxy日誌

首先看一下剛才省略的全域性配置:

global
    log         127.0.0.1 local2 #日誌傳送的ip和日誌的級別

    chroot      /var/lib/haproxy #haproxy執行時的根目錄
    pidfile     /var/run/haproxy.pid 
    maxconn     4000             #最大連線數  
    user        haproxy
    group       haproxy
    daemon                       #後臺執行

這裡定義的日誌local2
根據這一點我們去修改rsyslg服務的配置檔案,將這個級別的日誌定義到一個日誌檔案中。
/etc/rsyslog.conf新增如下一行

local2.*                            /var/log/haproxy.log

由於日誌傳送使用的udp所以還要將下面兩個選項開啟

$ModLoad imudp
$UDPServerRun 514

重啟日誌服務,然後重啟haproxy,觀察/var/log/haproxy是否有內容,如果有內容就代表日誌定向成功了。

[root@ha1 ~]# cat /var/log/haproxy.log 
Mar 18 22:08:15 localhost haproxy[1394]: Proxy mo started.
Mar 18 22:08:15 localhost haproxy[1394]: Proxy stats_auth started.

四 訪問限制

訪問限制就是對某一個ip的訪問定向到一個錯誤介面,讓該ip不能訪問正常服務。

frontend  mo *:80
        acl invalid_src src 172.25.3.250/24
        block if invalid_src
        default_backend             app

backend app
    balance     roundrobin
    server      static 172.25.3.102:80 check

#listen mo *:80
#   balance     roundrobin
#  server      static 172.25.3.102 check
#    server      static 172.25.3.103 check

以上配置最重要的就是acl,通過acl我們定義了一個非法的源ip,這個源可以是一個主機地址,也可是網路地址,當這個ip訪問的時候我們就block。
我們日常情況下當拒絕客戶訪問時候肯定會給一個別的介面好看一點的介面,這一點就是通過錯誤重定向功能做到的,增加如下配置

errorloc 403 http://172.25.3.100:8000/error/reject.html

五.根據資源不同將請求分配到不同伺服器

我們現在有兩臺http伺服器,準備一臺用來靜態頁面,另一臺放置圖片,改如何呢?
我們知道圖片資料,和靜態頁面是兩種資源,所以請求他們的url也不相同,根據這一特點我們進行請求的分離。
配置檔案如下:

frontend  mo *:80
        acl url_image path_beg -i /images
        acl url_image path_end -i .jpg .png .css
        acl invalid_src src 172.25.3.250
block if invalid_src
        default_backend             static
        use_backend image if url_image

backend static

    balance     roundrobin
    server      static 172.25.3.103:80 check
backend image
    balance     roundrobin
    server      static 172.25.3.102:80 check

172.25.3.102 上的資源目錄

[root@localhost html]# tree /var/www/html/
/var/www/html/
├── image
│   └── timg.jpg
└── index.html

1 directory, 2 files

172.25.3.103上的資源目錄

[root@localhost html]# tree /var/www/html/
/var/www/html/
└── index.html

測試:
這裡寫圖片描述
(192.168.0.181真機的一塊網絡卡,我將目的地址為192.168.0.181的包全改成了給172.25.3.100,所以不用在意這個地址)
發現靜態介面到了reserver2,也就是172.25.3.103

這裡寫圖片描述
由於3上根本沒有圖片檔案,所以這次定位到了172.25.3.102上。

六.根據狀態碼定向頁面

五.pacemaker+haproxy

這裡寫圖片描述
1 配置叢集服務我們首先要停掉haproxy,而且一定要停乾淨。
2.安裝pacemaker叢集需要的配件運維筆記31 (pacemaker高可用叢集搭建的總結)這裡有pacemaker的詳細配置。
3.測試

[root@ha1 ~]# yum install pacemaker corosync -y

安裝corosycn心跳元件,pacemaker叢集資源管理器

```
[root@ha1 ~]# rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm 

安裝crm shell管理,可以方便我們對叢集的配置和配置的分發。

bindnetaddr: 172.25.3.0     #第10行
service {                   #第34行
        name:pacemaker
        ver:0
}

corosync的配置檔案有一個example,我們將example去掉後重命名,只要修改如上三個部分即可。

[root@ha1 ~]# scp /etc/corosync/corosync.conf ha2.mo.com:/etc/corosync/

[root@ha1 ~]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync):               [  OK  ] #ha2也要開啟

[root@ha1 ~]# crm
crm(live)# 

將該檔案拷貝給另一個節點。開啟corsync服務。
進入crm配置叢集。

crm(live)configure# show
node ha1.mo.com
node ha2.mo.com
node localhost.localdomain
property $id="cib-bootstrap-options" \
    dc-version="1.1.10-14.el6-368c726" \
    cluster-infrastructure="classic openais (with plugin)" \
    expected-quorum-votes="2" \
    stonith-enabled="false"

叢集的配置初始情況如上。

crm(live)resource# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.3.200 cidr_netmask=24 op monitor interval=30s
crm(live)resource# primitive proxy lsb:haproxy op monitor interval=30s
crm(live)configure# group LB vip proxy 

首先新增vip資源,之後是proxy資源,最後是將兩個資源合成一個組,開啟服務組,觀察服務狀態。

Online: [ ha1.mo.com ha2.mo.com ]
OFFLINE: [ localhost.localdomain ]

 Resource Group: LB
     vip        (ocf::heartbeat:IPaddr2):   Started ha1.mo.com
     proxy  (lsb:haproxy):  Started ha1.mo.com

服務正常。

六 keepalived+haproxy

現在停掉corosync,並將與其相關的程序都殺乾淨。使用keepalived為haproxy做高可用叢集。由於keepalived不像heartbeat,corosync具有豐富的服務指令碼,所以先要考慮keepalived如何將服務啟動,關閉。keepalived是一個類似於layer3, 4 & 5交換機制的軟體,也就是我們平時說的第3層、第4層和第5層交換。Keepalived的作用是檢測web伺服器的狀態,如果有一臺web伺服器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的web伺服器從系統中剔除,當web伺服器工作正常後Keepalived自動將web伺服器加入到伺服器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web伺服器。

綜上我們需要解決的就是弄一個可以檢測健康並且關閉服務的指令碼。
指令碼如下:

#!/bin/bash
/etc/init.d/haproxy status &> /dev/null || /etc/init.d/haproxy restart &> /dev/null
if [ $? -ne 0 ];then
/etc/init.d/keepalived stop &> /dev/null
fi

相關推薦

筆記33 haproxy配置pacemaker可用+haproxy

概述:之前的部落格中提到的一種負載均衡方式是lvs,lvs的配置簡單,減少了認為出錯的概率,而且軟體處在tcp/ip協議棧的第四層,可以對各種web應用服務,但是因為本身不支援正則表示式處理,不能做動靜分離。那麼今天的haproxy的優勢就體現出來了,能夠支援虛

筆記43 使用saltstack配置完整線上服務(haproxy+keepalived,nginx+php+memcache,mysql主從)

概述: 之前我們所介紹過了很多實用的服務,有負載均衡類的,web服務類的,資料庫類的等等,這些服務有的配置容易,有的配置困難,那我們現在設想一下在生成環境中,有上百臺,甚至上千臺伺服器的情況下,難道要我們去挨個去配置每一臺伺服器嗎,這是無法想象的,所以有了sa

筆記4使用者資訊涉及到的檔案使用者管理命令使用者許可權的下放更新:關於useradd -b -d -m -k的一些理解和使用

概述:        理解多使用者,知道涉及使用者資訊的都有哪些檔案,使用者的管理命令,使用者許可權的下放。 1.什麼是使用者?        從日常生活中想的話,我們每個人都是當過使用者,去銀行你有個賬戶,對於銀行你就是個使用者,你的資訊被銀行記錄在資料庫(可以是任何介質

菜鳥筆記:安裝與配置Apacheserver

str .cn apach tps 官網 壓縮 ron entos 本地 前幾天在在阿裏花了49.5買了一個月的主機。試著好用再續費吧。 地域:青島可用區:青島可用區ACPU:1核內存:512MB帶寬:1Mbps操作系統:CentOS 6.5 64位雲盾:是

筆記21 郵件伺服器的搭建

概述: 雖然即時通訊工具諸如qq,微信之類的工具已經是大家和朋友溝通的首選了,但是在一些情況下,我們一定會使用到電子郵件這個東西,基本上國內大一點的網際網路公司都有電子郵件的服務,我們使用電子郵件的時候感覺非常便利,只用編輯標題,發件人,內容之後點擊發送,郵件就被送到了目的

學習筆記 c++ boost庫訊號和槽函式

#include"iostream" #include"boost/signals.hpp" using namespace std; void my_slot(){   cout<<"my_slot()"<<endl; } void my_sl

keepalived安裝與配置組建可用服務器

eight 如何 .org keep 局域網 yum 從服務器 改變 -1 一、準備環境   linux系統:CentOS7   keepalived版本:keepalived-1.3.5.tar.gz   keepalived下載地址:http://www.keepali

HaProxy代理搭建可用的web集群

第三方 應用 obi rewrite 內核 日誌 nag 完全 ret haProxy代理,搭建高可用的web集群 HTTP協議響應的狀態碼:200:OK301:重定向404:not found403:forbidden501:Internal Error HAProxy:

利用keepalived和haproxy配置mysql的可用負載均衡

轉載http://www.cnblogs.com/tae44/p/4717334.html 實驗系統:CentOS 6.6_x86_64(2.6.32-504.30.3.el6.x86_64) 實驗前提:防火牆和selinux都關閉 實驗說明:本實驗共有4臺主機,I

筆記40 Linux系統監控之CactiCacti搭建自動抓取cacti統計圖片指令碼

概述:監控系統在一個系統中十分重要,它會將很多重要的資訊,諸如記憶體資訊,cpu資訊,硬碟資訊集合在一起顯示出來,當系統出現問題的時候我們能及時定位並修復錯誤。今天介紹的監控系統是一款輕量級的監控系統Cacti,並附有python編寫的cacti統計圖片採集指令

筆記36 mysql的一主多從模型原始主從複製基於GTID主從複製

概述: mysql的主從複製是十分經典的一個應用,但是主從之間總會有資料一致性(data consistency )的問題,一般情況從庫會落後主庫幾個小時,而且在傳統一主多從(mysql5.6之前)的模型中當master down掉後,我們不只是需要將一個sl

筆記38 redisredis的主從切換主從自動切換

概述:redis是一個kv儲存,而且使用十分方便,配置也簡單。這次主要介紹下redis的主從複製,與主從自動切換。 框圖: 一.redis的簡單配置 redis的原始碼安裝十分方便,只需要執行 make && make ins

Linux筆記網絡基礎知識

使用 可靠 height image inter 電話線 ppp協議 網址 esp 網絡基礎知識 一、基本概念 1.ARPANET & TCP/IP:以“軟件”技術將網絡硬件整合,使得不同的計算機或者數據可以通過這個軟件達成數據溝通(TCP/IP技術也被稱為Inte

企業輕量級自動化工具—ansible常見的錯誤解決免秘鑰互信常用的模塊

企業 輕量級 自動化 企業輕量級自動化運維工具—ansible1.ansible簡介 ansible是“Ansible is Simple IT Automation”——簡單的自動化IT工具。它可以做到自動化部署APP;自動化管理配置項;自動化的持續交付;自動化的(AWS)雲服務管理。可實

計算機配置與組策略配置的區別---筆記

軟件設置 區別 計算機配置 範圍 域用戶 運維 策略 windows 指正 組策略配置計算機和用戶的不同點在其應用範圍。 若組策略對計算機進行了配置,則受配置計算機的軟件設置,Windows 設置,管理分配等都直接受組策略影響。若組策略對用戶進行了配置,則只有計算機用用戶賬

DNS概述---筆記補充版

DNS概述---運維筆記(補充版)一·DNS概述 把域名翻譯成IP地址的軟件稱為域名系統,即DNS。它是一種管理名字的方法。 (1)域名系統(Domain Name System縮寫DNS,Domain Name被譯為域名)是因特網的一項核心服務,它作為可以將域名和IP地址相互映射的一個分布式數據庫,能夠使人

部署DHCP服務---筆記補充版

部署DHCP服務---運維筆記一?DHCP概述 (1)了解DHCP服務:Dynamic Host Configuration Protoco動態主機配置協議是由Internet工作任務小組設計開發的,專門用於為TCP/IP參數的協議。l(1) 使用DHCP的好處:① 減少管理員的工作量② 避免輸入錯誤

自動化之SaltStack概述及簡單配置實例

ati 遠程 int lock 狀態 工具 保持 restart x86 在生產環境中,服務器往往不止一臺,有可能是成千上萬臺。對於運維人員來說,如果單獨對每臺服務器進行管理,工作難度實在是太大了。SaltStack是一個服務器基礎設施管理工具,它具有配置管理、遠程執行、監

心領神會--自動化之Ansible的核心概念安裝配置Ansible並學會使用其常見模塊。

是否 啟動 lease role 支持 概念 清單 註意 特點 自動化運維概述: 現如今隨著互聯網的高速發展,傳統運維方式效率太過低下,部署自動化運維可以安全高效的完成維護工作,成為當下運維的主要方式。 一般會把自動化運維工具劃分為兩類:一類是需要使用代理工具的,也就是基

理解自動化之Ansible的核心概念安裝配置Ansible並學會使用其常見模組。

自動化運維概述: 現如今隨著網際網路的高速發展,傳統運維方式效率太過低下,部署自動化運維可以安全高效的完成維護工作,成為當下運維的主要方式。 一般會把自動化運維工具劃分為兩類:一類是需要使用代理工具的,也就是基於專用的Agent程式來完成管理功能,如:Puppet、Func、Zabbix等;另外一