Linux Cluster之keepalived及keepalived + LVS DR的實現

 

一、HA Cluster基礎

系統可用性A=MTBF/(MTBF+MTTR)

MTBF:平均無故障時間

MTTR:平均修復時間

降低MTTR的方式:冗余(redundent)

衡量標準:幾個9 90%、99%、99.9%…

提升系統可用性的辦法之一:降低MTTR

通過冗余(redundant)的方式能夠避免單點故障(SPoF),從而降低MTTR。

冗余方式:

一主一備

一主多備

多主多備:此時,各主節點提供的服務不應該是同一個服務

主節點:active

備用節點:passive

主節點通過多播的方式以一定的頻率發送HeartBeat信息,告知其他備用節點自己仍在提供服務。一旦其他備用節點在一定時長之內沒有收到主節點的HeartBeat信息,會認為其發生故障,這時備用節點會基于優先級來搶占提供服務的IP地址,并把服務啟動向外提供。

當由多個節點構成一個高可用集群時,若出現某主節點與其他節點互相之間不能通信,但主節點還在正常提供服務,此時,其他節點會與主節點爭搶資源,這種情況被稱之為Networl Partition(也被稱之為腦裂brain split)。出現此情況時,節點數量大于半數的節點將接手服務。

構建集群時,一般使用奇數個節點。當出現網絡分區情況時能夠選舉出新的主節點。

二、HA CLuster的實現方案

vrrp協議的實現:keepalived

ais:完備的HA集群

heartbeat

corosync

三、VRRP協議簡介

VRRP全稱 Virtual Router Redundancy Protocol,即虛擬路由冗余協議??梢哉J為它是實現路由器高可用的容錯協議,即將N臺提供相同功能的路由器組成一個路由器組(Router Group),這個組里面有一個master和多個backup,但在外界看來就像一臺一樣,構成虛擬路由器。擁有一個虛擬IP(vip,也就是路由器所在局域網內其他機器的默認路由),占有這個IP的master實際負責ARP相應和轉發IP數據包,組中的其它路由器作為備份的角色處于待命狀態。master會發組播消息,當backup在超時時間內收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master,保證路由器的高可用。

在VRRP協議實現里,虛擬路由器使用 00-00-5E-00-01-XX 作為虛擬MAC地址,XX就是唯一的 VRID (Virtual Router IDentifier),這個地址同一時間只有一個物理路由器占用。在虛擬路由器里面的物理路由器組里面通過多播IP地址 224.0.0.18 來定時發送通告消息。每個Router都有一個 1-255 之間的優先級別,級別最高的(highest priority)將成為主控(master)路由器。通過降低master的優先權可以讓處于backup狀態的路由器搶占(pro-empt)主路由器的狀態,兩個backup優先級相同的IP地址較大者為master,接管虛擬IP

VRRP協議術語

虛擬路由器:由一個 Master 路由器和多個 Backup 路由器組成。主機將虛擬

路由器當作默認網關。

VRID:虛擬路由器的標識。有相同 VRID 的一組路由器構成一個虛擬路由器。

Master 路由器:虛擬路由器中承擔報文轉發任務的路由器。

Backup 路由器:Master 路由器出現故障時,能夠代替 Master 路由器工作的路由器。

虛擬 IP 地址:虛擬路由器的 IP 地址。一個虛擬路由器可以擁有一個或多個IP地址。

IP 地址擁有者:接口 IP 地址與虛擬 IP 地址相同的路由器被稱為 IP 地址擁有者。

虛擬 MAC 地址:一個虛擬路由器擁有一個虛擬 MAC 地址。虛擬 MAC 地址的格式為 00-00-5E-00-01-{VRID}。通常情況下,虛擬路由器回應 ARP 請求使用的是虛擬 MAC 地址,只有虛擬路由器做特殊配置的時候,才回應接口的真實 MAC 地址。

優先級:VRRP 根據優先級來確定虛擬路由器中每臺路由器的地位。

非搶占方式: 如果 Backup 路由器工作在非搶占方式下,則只要 Master 路由器沒有出現故障,Backup 路由器即使隨后被配置了更高的優先級也不會成為Master 路由器。

搶占方式:如果 Backup 路由器工作在搶占方式下,當它收到 VRRP 報文后,會將自己的優先級與通告報文中的優先級進行比較。如果自己的優先級比當前的 Master 路由器的優先級高,就會主動搶占成為 Master 路由器;否則,將保持 Backup 狀態。

四、keepalived體系結構及簡單配置

4.1、keepalived是什么及其功能

keepalived是VRRP協議的軟件實現,原生設計的目的為了高可用ipvs服務。其功能如下:

1)、基于VRRP協議完成地址流動;

2)、為VIP地址所在的節點生成ipvs規則(定義在配置文件中);

3)、為各RS做健康狀態檢測;

4)、基于腳本調用接口通過執行腳本完成腳本中定義的功能;

4.2、keepalived體系結構

keepalived是高度模塊化的軟件,其由核心模塊、內存管理、I/O復用、配置文件分析器四個模塊構成。

keepalived采用了多進程的設計模式,每個進程負責不同的功能。

父進程:內存管理,子進程管理等

子進程:VRRP子進程

子進程:healthchecker子進程

Keeplived的體系結構分兩層:內核空間(Kernel Spase)和用戶空間(User Spase)。

1)、內核空間層包括兩個模塊:

IPVS:IPVS模塊是Keepalived引入的一個第三方模塊,通過IPVS可以實現基于IP的負載均衡集群。IPVS默認包含在LVS集群軟件中。在Keepalived中,IPVS模塊是可配置的,如果需要負載均衡功能,可以在編譯Keepalived時打開負載均衡功能,也可以通過配置編譯參數關閉。

NETLINK:主要用于實現一些高級路由框架和一些相關的網絡功能,完成用戶空間層Netlink Reflector模塊發來的各種網絡請求。

2)、用戶空間層分為4個部分:

Scheduler – I/O Multiplexer : I/O復用分發調度器,負責安排Keepalived所有內部的任務請求。

Memory Management:內存管理機制,這個框架提供了訪問內存的一些通用方法。

Control Plane:Keepalived的控制面板,實現對配置文件進行編譯和解析,Keepalived的配置文件解析比較特殊,不是一次解析所有模塊的配置,而是在用到某個模塊時才解析相應的配置。

Core components:Keepalived的核心組件,包含了一系列功能模塊,主要有WatchDog、Checkers、VRRP Stack、IPVS wrapper和Netlink Reflector。

3)、Core components的5個主要功能模塊:

WatchDog:負責監控Checkers和VRRP進程。

Checkers:負責對服務器運行狀態檢測和故障隔離

VRRP Stack:負責HA集群中失敗切換(Failover)。

IPVS wrapper:負責將設置好的IPVS規則發送到內核空間并提交給IPVS模塊,最終實現IPVS模塊的負載均衡功能。

Netlink Reflector:負責高可用集群中Failover時虛擬IP(VIP)的設置和切換。Netlink Reflector的所有請求最后都發送到內核空間層的NETLINK模塊來完成。

clip_image002

4.3、keepalived程序環境

配置文件:/etc/keepalived/keepalived.conf

主程序:/usr/sbin/keepalived

配置文件組成部分:

全局配置(GLOBAL CONFIGURATION):

Global definations

static routes

VRRPD CONFIGURATION

VRRP synchronization group(s)

VRRP instance(s)

LVS CONFIGURATION

Virtual server group(s)

Virtual server(s)

4.4、keepalived配置文件詳解之全局配置&vrrp instance配置

1)全局配置

global_defs {

notification_email { #當keepalieved發生切換等操作時,需要通知的收件人

acassen@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc#通知郵件的發件人

smtp_server 192.168.200.1 #郵件服務器地址

smtp_connect_timeout 30 #郵件服務器連接超時時長

router_id LVS_DEVEL #當前路由器的標識符

vrrp_mcast_group4 224.0.0.18 #發送多播的多播地址。當局域網中存在多個keepalived集群時,建議將其地址修改為各自獨立。

}

要能發送多播信息,網卡必須支持MULTICAST。使用ip link show可以查看是否支持

clip_image003

如果查看到不支持,可以通過ip link set dev ifname multicast on來啟用支持

~]# ip link set dev eth0 multicast on

2)虛擬路由器配置

vrrp_instance instance_name { #一個vrrp_instance定義一個虛擬路由器,instance_name不能重復。

state MASTER |BACKUP #定義當前節點在此虛擬路由器的初始狀態。只能有一個MASTER。注:初識狀態是通過優先級的比對來最終決定的

interface interface_name #當前虛擬路由器使用的物理接口,即Vip配置在哪個網卡的別名上

virtual_router_id VRID #虛擬路由器的唯一標識符,不能重復,范圍0-255

priority 100 #當前節點在此虛擬路由器中的優先級,范圍1-254。優先級高的為MASTER

advert_int 1 #主加點向備用節點通告自己heartbeat信息的時間間隔,默認1秒。

authentication { #認證方式和密碼,主從必須一樣。

auth_type AH|PASS #推薦使用簡單字符認證,不能超過8個字符

auth_pass 1111 #認證密碼,最好使用隨機數。openssl rand -hex 4

}

virtual_ipaddress { #設定虛擬路由器IP地址,可以指定配置在哪個物理接口上,也可以指定標簽。其隨著state的變化而增加或刪除,state為MASTER時增加,BACKUP時刪除。state由priority決定。

192.168.200.17/24 dev eth1

192.168.200.18/24 dev eth2 label eth2:1

}

track_interface { #當虛擬路由器配置在某物理接口上時,此配置用于定義當該物理接口發生故障時,則轉為FAULT狀態,重新觸發選舉。

eth0

eth1

}

nopreempt #定義為非搶占模式,默認為搶占模式

preempt_delay #搶占模式下節點上線后觸發新選舉操作的延時時長

#在實例中,可以自定義通知方式,而不使用全局通知方式,配置如下

notify_master <STRING>|<QUOTED-STRING> #當前節點為主節點時觸發的腳本

notify_backup <STRING>|<QUOTED-STRING> #當前節點為備節點時觸發的腳本

notify_fault <STRING>|<QUOTED-STRING>#當前節點轉為失敗狀態時觸發的腳本

notify <STRING>|<QUOTED-STRING>#通用格式的通知觸發機制,能完成上述三種狀態切換的通知,不能與上述通知配置同時使用。

}

keepalived服務啟動日志信息:保存于/var/log/messages

4.5、keepalived配置示例之vrrp instance實現:

配置前提:

(1) 各節點時間必須同步; 使用ntp或 chrony服務進行同步。

(2) 確保iptables及selinux不會成為阻礙;

(3) 各節點之間可通過主機名互相通信(非必須);

(4) 各節點之間的root用戶 可以基于密鑰認證的ssh互相通信;

實驗環境:

node1 CentOS6.8 192.168.154.127

node2 CentOS6.8 192.168.154.128

虛擬路由器1:名稱 testone ip:192.168.154.220

虛擬路由器2:名稱 testtwo ip:192.168.154.230

node1為虛擬路由器1 testone的主節點,虛擬路由器2 testtwo的備節點

node2為虛擬路由器2 testtwo的主節點,虛擬路由器1 testone的備節點

1)單主配置。以配置testone為例

a)在node1上配置,其為主節點

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id 121

vrrp_mcast_group4 224.0.54.154

}

vrrp_instance testone {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 797fea91

}

virtual_ipaddress {

192.168.154.220/24 dev eth1

}

}

b)在node2上配置,其為備用節點。

備用節點配置文件在主節點配置文件的基礎上修改state為BACKUP和priority低于主節點即可

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id 121

vrrp_mcast_group4 224.0.54.154

}

vrrp_instance testone {

state BACKUP #在備節點上state改為BACKUP

interface eth0

virtual_router_id 51

priority 95 #備節點上的priority低于主節點的priority

advert_int 1

authentication {

auth_type PASS

auth_pass 797fea91

}

virtual_ipaddress {

192.168.154.220/24 dev eth1

}

}

之后,分別在主節點和備節點啟動keepalived服務。

c)在主節點上查看配置

clip_image005

查看網卡信息

clip_image006

d)查看備節點配置及網卡信息

clip_image008

clip_image009

2)主主配置。

配置2個虛擬路由器,一個節點為虛擬路由器1的主節點,虛擬路由器2的備節點;另一個節點為虛擬路由器2的主節點,虛擬路由器1的備節點。

a)在node1上新增虛擬路由器2 testtwo的配置,其為testtwo的備節點

vrrp_instance testtwo {

state BACKUP

interface eth0

virtual_router_id 52 #注:虛擬路由器之間的ID不能重復

priority 97

advert_int 1

authentication {

auth_type PASS

auth_pass fe9f18a0 #注:虛擬路由器之間的認證密碼不能重復

}

virtual_ipaddress {

192.168.154.230/24 dev eth1 #注:虛擬路由器之間的虛擬IP互相獨立

}

}

b)在node2上新增以下配置,其為testtwo的主節點

vrrp_instance testtwo {

state MASTER

interface eth0

virtual_router_id 52

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass fe9f18a0

}

virtual_ipaddress {

192.168.154.230/24 dev eth1

}

}

c)先啟動node1上的keepalived,查看主節點日志及網卡信息

發現,此時,由于node2上沒有啟動keepalived,所以node1既是testone的主節點,也是testtwo的主節點

clip_image011

clip_image012

d)啟動node2上的keepalived,查看備節點日志及網卡信息。發現對于testtwo實例,其收到一個低優先級的組播信息,因此發起新的選舉,成為testtwo的主節點。

clip_image014

clip_image015

e)此時,在查看node1上日志。發現對于testtwo實例,其受到一個更高優先級的組播,因此其轉換為BACKUP模式,并且移除testtwo的虛擬IP

clip_image017

clip_image018

配置郵件通知。當主備節點之間發生切換時,系統管理員能查看到相應的信息,對系統的健康狀態做出判斷。

1)在node1上,編輯/etc/keepalived/notify.sh

#!/bin/bash

#

contact=’root@localhost’

notify() {

mailsubject=”$(hostname) to be testone $1, vip floating.”

mailbody=”$(date +’%F %T’): vrrp transition, $(hostname) changed to be $1″

echo “$mailbody” | mail -s “$mailsubject” $contact

}

case $1 in

master)

notify master

;;

backup)

notify backup

;;

fault)

notify fault

;;

*)

echo “Usage: $(basename $0) {master|backup|fault}”

exit 1

;;

esac

2)修改/etc/keepalived/notify.sh權限,增加可執行權限

3)vim /etc/keepalived/keepalived.conf。在testone實例中增加以下內容

notify_master “/etc/keepalived/notify.sh master”

notify_backup “/etc/keepalived/notify.sh backup”

notify_fault “/etc/keepalived/notify.sh fault”

如下圖:

clip_image019

4)將腳本文件拷貝至其他備節點中,此處僅有node2節點。

5)同樣也需要編輯/etc/keepalived/keepalived.conf。在testone實例中增加以下內容

notify_master “/etc/keepalived/notify.sh master”

notify_backup “/etc/keepalived/notify.sh backup”

notify_fault “/etc/keepalived/notify.sh fault”

6)測試。分別停掉node1、node2上的keepalived服務做測試。皆可看到

4.6、keepalived配置文件詳解之virtual server配置

virtual_server VIP VPORT { #設置虛擬服務器,指定虛擬IP及服務端口,用空格分開

delay_loop 6 #設置服務輪詢的時間間隔,單位秒

b_algo rr|wrr|lc|wlc|lblc|sh|dh #集群調度算法

lb_kind NAT|DR|TUN #集群類型

persistence_timeout 50 #持久連接時長。

protocol TCP #集群服務通過哪個協議提供

sorry_server 192.168.200.200 1358 #定義當整個集群不能正常提供服務時,由誰來對客戶請求進行響應,而不是直接返回拒絕鏈接等錯誤信息。

real_server 192.168.201.100 443 { #集群服務器的Real Server IP及其端口

weight 1 #定義權重,數值越大,權重越高。性能較高的服務器建議設置較高的權重,能合理利用資源

notify_up <STRING>|<QUOTED-STRING> #定義RS狀態改變腳本

notify_down <STRING>|<QUOTED-STRING> #定義RS狀態改變腳本

#健康狀態檢測機制,支持應用層檢測HTTP_GET、SSL_GET;傳輸層檢測TCP_CHECK,使用一種即可。注:在做健康狀態檢測時,有三種方式:1、icmp ping;2、掃描tcp|udp服務端口;3、通過應用層協議直接請求關鍵資源,以判斷服務是否可用。通常而言,使用應用層檢測能精準定位服務是否可用。

HTTP_GET|SSL_GET {

url {

path <STRING> #定義要監控的URL

digest <STRING> #判斷上述檢測機制為健康狀態的響應的內容的校驗碼

status_code <INT> #判斷上述檢測機制為健康狀態的響應碼。兩種判斷方式選擇其一即可。也可一起使用。

}

connect_timeout <INTEGER> #連接超時時長

nb_get_retry <INT> #重試的次數;

delay_before_retry <INT> #重試之前延遲時長;

connect_ip <IP ADDRESS> #向當前RS的哪個IP地址發起健康狀態檢測請求;

connect_port <PORT> #向當前RS的哪個PORT發起健康狀態檢測請求;

bindto <IP ADDRESS> #發出健康狀態檢測請求時使用的源地址;

bind_port <PORT> #源端口

}

TCP_CHECK {

connect_timeout <INTEGER> #連接超時時長

nb_get_retry <INT> #重試的次數;

delay_before_retry <INT> #重試之前延遲時長;

connect_ip <IP ADDRESS> #向當前RS的哪個IP地址發起健康狀態檢測請求;

connect_port <PORT> #向當前RS的哪個PORT發起健康狀態檢測請求;

bindto <IP ADDRESS> #發出健康狀態檢測請求時使用的源地址;

bind_port <PORT> #源端口

}

}

}

4.7、keepalived配置示例之keepalive + LVS DR的實現

環境: http server通過lvs DR實現負載均衡,director service通過keepalived保證高可用。如下圖所示

clip_image021

為了以示區別,http server1上的index頁面內容為“this is RS1 website”; http server2上的index頁面內容為“this is RS2 website”

配置步驟:

1)配置http server

a)在http server1上配置

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig lo:0 192.168.154.168 netmask 255.255.255.255 up

route add -host 192.168.154.168 dev lo:0

之后:安裝http程序,配置站點內容為“this is RS1 website”,并啟動httpd服務,具體配置略。

b)在http server2上的配置類似http server1,不再贅述。

2)配置keepalived。

a)keepalived的主節點配置如下。編輯/etc/keepalived/keepalived.conf。配置內容如下:

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id 121

vrrp_mcast_group4 224.0.54.154

}

vrrp_instance testone {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 797fea91

}

virtual_ipaddress {

192.168.154.168/24 dev eth1

}

notify_master “/etc/keepalived/notify.sh master”

notify_backup “/etc/keepalived/notify.sh backup”

notify_fault “/etc/keepalived/notify.sh fault”

}

virtual_server 192.168.154.168 80 {

delay_loop 6

lb_algo rr

lb_kind DR

protocol TCP

real_server 192.168.154.129 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 1

nb_get_retry 3

delay_before_retry 1

}

}

real_server 192.168.154.130 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 1

nb_get_retry 3

delay_before_retry 1

}

}

}

b)將主節點上/etc/keepalived/keepalived.conf配置文件拷貝至BACKUP上。

修改vrrp instance配置上的state 為BACKUP及priority低于MASTER的priority 100即可。

3)啟動主節點及備節點上的keepalived服務。

4)模擬http server服務故障

在主節點上使用watch ipvsadm -Ln實時監控RS的健康狀況。

停止http server1上的http服務:service httpd stop

clip_image022

5)當兩個http server都出現故障時,即集群不能正常提供服務時。此時在請求http服務,會提示錯誤信息。但此錯誤信息并不能給予用戶判斷請求錯誤的原因提供幫助。通過配置sorry server可以讓用戶或系統管理員了解服務故障的部分原因。sorry server配置步驟如下:

a)在keepalived的MASTER和BACKUP節點上,配置http服務。在master上提供的頁面內容為”http cluster with some wrong,this is sorry server 1″,backup上提供的頁面內容為”http cluster with some wrong,this is sorry server 2″。

http服務配置完成之后,啟動服務。

b)編輯主節點的/etc/keepalived/keepalived.conf配置文件。在virtual_server中增加以下內容:

sorry_server 127.0.0.1 80

在備節點上操作相同。

之后,在主、備節點上使用service keepalived reload重載配置。

c)在http server的http服務都停止時,再去訪問。測試結果如下

測試命令:for i in {1..10};do curl http://192.168.154.168;done

clip_image023

此時,停止192.168.154.127上的keepalived服務,再次測試,結果為

clip_image024

6)從測試結果判斷,keepalived + lvs DR工作正常。將停掉的keepalived服務恢復啟動,確保http server及keepalived節點上的http服務為啟動即可,至此,keepalived + lvs DR配置完成。

附:快速部署LVS DR的示例腳本。

#!/bin/bash

#

vip=”192.168.154.168″

vport=”80″

netmask=”255.255.255.255″

iface=”lo:0″

case $1 in

start)

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig $iface $vip netmask $netmask broadcast $vip up

route add -host $vip dev $iface

;;

stop)

ifconfig $iface down

echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

esac

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/57040

(1)
M20-1鐘明波M20-1鐘明波
上一篇 2016-11-02 20:25
下一篇 2016-11-02 20:32

相關推薦

  • N25-第六周博客作業

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@han ~]# cp /etc/rc.d/rc.sysinit /tmp [root@han ~]#&n…

    Linux干貨 2017-02-16
  • Linux基礎知識(三)-用戶管理組管理,正則grep,文本處理

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中 5、取出當前主機的IP…

    Linux干貨 2016-10-09
  • N25_第一周_yecho

    ???

    Linux干貨 2016-12-01
  • bash的工作特性之命令執行狀態返回值和命令行展開

    bash特性之一:命令別名 將一個命令用其他名字來代替,可以用別名來簡化操作。 獲取當前用戶可用的別名的定義: ~]#alias NAME=’COMMAND’ bash的特性之二:命令歷史 shell進程會保存其會話中用戶曾經執行過的命令;命令通過其“歷史文件”來持久保存此前執行過的命令;每個用戶都有其自己專用的歷史文件; HISTSIZE:shell進程的…

    Linux干貨 2016-11-06
  • LVS(Linux Virtual Server)學習筆記

    LVS(Linux Virtual Server)學習筆記 此文主要對lvs負載均衡學習的總結,一為記錄,二為鞏固。主要介紹:1、lvs基礎;2、lvs的配置;3、lvs的實現 前提:負載均衡(LB Cluster)     負載均衡實現方法有兩種:硬件實現和軟件實現;    &…

    Linux干貨 2017-02-13
  • shell腳本的一點補充

    腳本內容補充 數組 變量:存儲單個元素的內存空間數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。 數組名和索引 索引:編號從0開始,屬于數值索引注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。bash的數組支持稀疏格式(索引不連續) 數組的使用 聲明數組: declare -a ARRAY_NAME…

    Linux干貨 2016-08-24
欧美性久久久久