lvs負載均衡—高可用集群(keepalived)

基本概念:

什么是Keepalived呢,keepalived觀其名可知,保持存活,在網絡里面就是保持在線了,也就是所謂的高可用或熱備,用來防止單點故障(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)的發生,那說到keepalived時不得不說的一個協議就是VRRP協議,可以說這個協議就是keepalived實現的基礎。

VRRP( Virtual Router Redundancy Protocol )協議:
虛擬路由冗余協議(Virtual Router Redundancy Protocol,簡稱VRRP)是由IETF提出的解決局域網中配置靜態網關出現單點失效現象的路由協議,Keepalived就是巧用VRRP協議來實現高可用性(HA)的。
1.用于實現路由器冗余的協議
2.解決靜態路由單點故障問題
3.通過一種競選(election)協議來實現虛擬路由器的功能

LVS提供負載均衡,keepalived提供健康檢查,故障轉移,提高系統的可用性! 采用這樣的架構以后,很容易對現有系統進行擴展,只要在后端添加或者減少realserver,更改lvs的配置文件,就能實現無縫配置變更!

實驗搭建:

server1:lvs調度服務器DS1:192.168.13.111
server2:后端服務器RS1:192.168.13.112
server3:后端服務器RS2:192.168.13.113
server4:lvs調度服務器DS2:192.168.13.114
VIP:192.168.13.100

1 . 在server1與server4上分別解壓keepalived并編譯安裝:

tar zxf keepalived-2.0.6.tar.gz        # 解壓
yum install gcc openssl-devel -y   # 解決依賴
cd keepalived-2.0.6     
./configure --prefix=/usr/local/keepalived --with-init=systemd      # 編譯
make &&make install     # 安裝 

在這里插入圖片描述
裝好之后會有這個keepalived目錄,
其實不用兩邊都這么裝,麻煩,一邊裝好之后直接scp傳過去就好了。

2 . 配置啟動配置文件 調度器(server1和server4)都進行相同操作:

ln -s /usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig ##配置文件,腳本都做成軟鏈接
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

3 . 配置keepalived:

編寫主節點server1的配置文件

cd /etc/keepalived
vim keepalived.conf
global_defs {notification_email {root@localhost #節點宕機了將會接收到異常郵件的主機}notification_email_from keepalived@localohost #郵件發送人smtp_server 127.0.0.1  #發送的服務器smtp_connect_timeout 30 #指定連接超時時間router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER  #主節點表示interface ens33      # 網卡名virtual_router_id 13priority 100  #權重advert_int 1  #檢查的間隔1sauthentication {auth_type PASS  #認證方式auth_pass 1111  #認證的密碼}virtual_ipaddress {192.168.13.100}
}
virtual_server 192.168.13.100 80 {delay_loop 6 #連接失敗六次之后,發送郵件lb_algo rr  #lvs調度算法lb_kind DR  #lvs該工作方式protocol TCP  # 端口real_server 192.168.13.112 80 {TCP_CHECK {weight 1connect_port 80connect_timeout 3}}real_server 192.168.13.113 80 {TCP_CHECK {weight 1connect_port 80connect_timeout 3}}
}

編好之后
systemctl start keepalived
systemctl enable keepalived

再給server4 scp 過去

scp keepalived.conf root@192.168.13.114:/etc/keepalived/

在server4端只需要

state BACKUP
priority 50		##修改這兩個選項

改好之后
systemctl start keepalived
systemctl enable keepalived

3 . 真實服務器設置

1). 安裝httpd 啟動設置訪問頁面

注意:該處為了驗證負載均衡的效果,后端真實服務器設置不同的訪問內容,明顯標示內容來自不同的后端服務器。

2). 添加VIP到各自的物理網卡中

ip addr add 192.168.13.100/24 dev ens33    # 臨時添加ip到eth0網卡

3). 設置arptable策略,解決將用戶所有針對VIP的請求發送到DS 而不是RS

yum install arptables -y # 安裝管理工具
arptables -A INPUT -d 192.168.13.100 -j DROP
arptables -A OUTPUT -s 192.168.13.100 -j mangle --mangle-ip-s 192.168.13.112

在另一端RS修改記著ip

4 . 測試:

1). 設置完成真實服務器之后,在兩個調度器上查看ipvsadm 全部自動生成負載均衡策略:
在這里插入圖片描述
2). 使用客戶端主機測試:
負載均衡正常

在這里插入圖片描述
3 ). 關閉真實服務器172.25.13.140的http的服務。模擬該服務器故障,測試該真實服務器被踢除出列表,當服務正常的時候會自動添加到列表中

在這里插入圖片描述
在這里插入圖片描述
當打開服務時,恢復正常
在這里插入圖片描述
在這里插入圖片描述
4 ) . 目前負載均衡服務器工作在主服務器,主服務器上會添加vip,關閉主服務器的keepalived,模擬負載均衡主服務器異常,這時候會切換到由服務器提供負載均衡服務,并且vip會主動漂移到副服務器。

主服務器

在這里插入圖片描述
在這里插入圖片描述
負載均衡主服務器異常,將會由副服務器提供服務,vip會自動漂移到副服務器:

在這里插入圖片描述
客戶端測試服務正常:
在這里插入圖片描述

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

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

相關文章

定期定量采購_企業常見的六種采購策略

注冊職業采購經理CPPM考試網?www.apscppm.com對不起,我是采購合同生效的條件是什么?怎樣制定談判方案?如何在采購時讓供應商聽你的指揮!沒做預算不能采購,應該作為企業采購管理的基本原則。編制現金預算就是要解決收入…

stringreader_Java StringReader markSupported()方法與示例

stringreaderStringReader類markSupported()方法 (StringReader Class markSupported() method) markSupported() method is available in java.io package. markSupported()方法在java.io包中可用。 markSupported() method is used to check whether this StringReader strea…

pacemaker+corosync實現集群管理

前言: 高可用集群,是指以減少服務中斷(如因服務器宕機等引起的服務中斷)時間為目的的服務器集群技術。簡單的說,集群就是一組計算機,它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集群的節點。 …

分頁導航的實現方法

這個導航是閱讀了精通css這本書后做的demo&#xff0c;感覺以前寫的真的是弱爆了 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style type"text/css">ol.n…

更換mysql_這些被你忽視的MySQL細節,可能會讓你丟飯碗!

我們在 MySQL 入門篇主要介紹了基本的 SQL 命令、數據類型和函數&#xff0c;在具備以上知識后&#xff0c;你就可以進行 MySQL 的開發工作了&#xff0c;但是如果要成為一個合格的開發人員&#xff0c;你還要具備一些更高級的技能&#xff0c;下面我們就來探討一下 MySQL 都需…

Java RandomAccessFile skipBytes()方法與示例

RandomAccessFile類skipBytes()方法 (RandomAccessFile Class skipBytes() method) skipBytes() method is available in java.io package. skipBytes()方法在java.io包中可用。 skipBytes() method is used to skip the given number of bytes in this file and possibly set …

rhcs集群套件—紅帽6的高可用

含義及理解&#xff1a; RHCS是Red Hat Cluster Suite的縮寫&#xff0c;也就是紅帽子集群套件&#xff0c;RHCS是一個能夠提供高可用性、高可靠性、負載均衡、存儲共享且經濟廉價的集群工具集合&#xff0c;&#xff0c;它將集群系統中三大集群架構&#xff08;高可用性集群、…

MapReduce二次排序

2019獨角獸企業重金招聘Python工程師標準>>> 默認情況下&#xff0c;Map輸出的結果會對Key進行默認的排序&#xff0c;但是有時候需要對Key排序的同時還需要對Value進行排序&#xff0c;這時候就要用到二次排序了。下面我們來說說二次排序 1、二次排序原理 我們把二…

數據有序_詳解數據庫插入性能優化:合并+事務+有序數據進行INSERT操作

概述對于一些數據量較大的系統&#xff0c;數據庫面臨的問題除了查詢效率低下&#xff0c;還有就是數據入庫時間長。特別像報表系統&#xff0c;每天花費在數據導入上的時間可能會長達幾個小時或十幾個小時之久。因此&#xff0c;優化數據庫插入性能是很有意義的。其實最有效的…

Java ProcessBuilder environment()方法與示例

ProcessBuilder類的environment()方法 (ProcessBuilder Class environment() method) environment() method is available in java.lang package. environment()方法在java.lang包中可用。 environment() method is used to return Map interfaces of this process builder env…

容器內應用日志收集方案

容器化應用日志收集挑戰 應用日志的收集、分析和監控是日常運維工作重要的部分&#xff0c;妥善地處理應用日志收集往往是應用容器化重要的一個課題。 Docker處理日志的方法是通過docker engine捕捉每一個容器進程的STDOUT和STDERR&#xff0c;通過為contrainer制定不同log dri…

python統計行號_利用Python進行數據分析(第三篇上)

上一篇文章我記錄了自己在入門 Python 學習的一些基礎內容以及實際操作代碼時所碰到的一些問題。這篇我將會記錄我在學習和運用 Python 進行數據分析的過程&#xff1a;介紹 Numpy 和 Pandas 兩個包運用 Numpy 和 Pandas 分析一維、二維數據數據分析的基本過程實戰項目【用 Pyt…

lnmp架構搭建—源碼編譯(nginx、mysql、php)

含義及理解&#xff1a; LNMP LinuxNginxMysqlPHP&#xff1a;LNMP是指一組通常一起使用來運行動態網站或者服務器的自由軟件名稱首字母縮寫。L指Linux&#xff0c;N指Nginx&#xff0c;M一般指MySQL&#xff0c;也可以指MariaDB&#xff0c;P一般指PHP&#xff0c;也可以指P…

Java PipedInputStream available()方法與示例

PipedInputStream類的available()方法 (PipedInputStream Class available() method) available() method is available in java.io package. available()方法在java.io包中可用。 available() method is used to return the number of available bytes left that can be read …

解析xml_Mybatis中mapper的xml解析詳解

上一篇文章分析了mapper注解關鍵類MapperAnnotationBuilder&#xff0c;今天來看mapper的項目了解析關鍵類XMLMapperBuilder。基礎介紹回顧下之前是在分析configuration的初始化過程&#xff0c;已經進行到了最后一步mapperElement(root.evalNode("mappers"))&#x…

lnmp—MemCache的作用

含義及理解&#xff1a; 1 . memcache是一個高性能的分布式的內存對象緩存系統&#xff0c;用于動態web應用以減輕數據庫負擔。通過在內存里維護一個統一的巨大的hash表&#xff0c;來存儲經常被讀寫的一些數組與文件&#xff0c;從而極大的提高網站的運行效率。 memcache是一…

Java ListResourceBundle getKeys()方法與示例

ListResourceBundle類的getContents()方法 (ListResourceBundle Class getContents() method) getContents() method is available in java.util package. getContents()方法在java.util包中可用。 getContents() method is used to return an enumeration of all the keys tha…

orale用戶密碼過期處理

使用具有管理權限的用戶登錄1、查看用戶的proifle是哪個&#xff0c;一般是default&#xff1a;SELECT username,PROFILE FROM dba_users;2、查看指定概要文件&#xff08;如default&#xff09;的密碼有效期設置&#xff1a;sql>SELECT * FROM dba_profiles s WHERE s.prof…

python字典怎么設置_在python中設置字典中的屬性

在python中設置字典中的屬性是否可以在python中從字典創建一個對象&#xff0c;使每個鍵都是該對象的屬性&#xff1f;像這樣的東西&#xff1a;d { name: Oscar, lastName: Reyes, age:32 }e Employee(d)print e.name # Oscarprint e.age 10 # 42我認為這幾乎與這個問題相反…

Java ObjectInputStream readByte()方法與示例

ObjectInputStream類readByte()方法 (ObjectInputStream Class readByte() method) readByte() method is available in java.io package. readByte()方法在java.io包中可用。 readByte() method is used to read a byte (i.e. 8 bit) of data from this ObjectInputStream. re…