Linux高級服務搭建

 

集羣
  1. 集羣原理

    集羣:一組協同工做的服務器對外表現爲一個總體php

    LBC:負載均衡集羣,多臺主機承擔壓力請求html

    HAC:高可用集羣,儘量的保障服務的不間斷運行前端

    HPC:高性能運算集羣,提供單臺服務器提供不了的計算能力java

    集羣結構: node

            負載調度器:管理集羣的主機,能夠是硬件或軟件python

            服務器池:集羣服務器mysql

            共享存儲:共享集羣服務器存儲地方linux

    負載調度器組件 ios

    硬件:nginx

    一流:F5中big-ip    ,價格昂貴

    二流:ROSE ,安瑞科技

    定義:把核心的算法封裝在獨立的運算芯片中

                優勢:

    一、速度更快

    二、更穩定

    三、學習成本低廉

                軟件:amoeba、RAC、LVS 、Nginx、haproxy

    優勢:

    一、開源免費

    二、學習成本高

    NAS:網絡附加存儲,低廉,速度慢,併發低

    分佈式存儲:MFS(主) NFS(多個)

        負載均衡集羣 LBC

        組件:1.負載調度器 2.服務器池 3.共享存儲

        負載調度器

            硬件:F5中big-ip

            軟件:Nginx,LVS(主要學習)

    負載調度層級(各層應用軟件)

            二層:數據鏈路,MAC尋址,鏈路級負載:判斷網絡,暫時只有硬件可作F5 big-ip

            四層:傳輸層IP,PORT,LVS、haproxy

            七層:應用層URL,FQDN,amoeba、nginx

        工做原理

            四層:創建一個完整TCP鏈接,由客戶端發起,負載調度器轉發至真實服務器完成

            七層:創建兩次完成TCP鏈接,由客戶端至調度器一次,調度器至真實服務器另外一次

                判斷

                    四層:IP + PORT 套接字(源目的,IP端口)

                    七層:FQDN,URL(域名)

                優勢

                    四層:壓力偏小,併發較大

                    七層:壓力大,可是可以識別 主機名 (虛擬主機)

                工做場景

                    四層:TCP UDP C/S

                    七層:ssl http mail

    安全性

                    四層:能夠轉發 SYN

                    七層:能夠攔截 SYN

    高可用集羣HAC

        實現方案:心跳檢測,發數據包,檢查服務器是否正常運行,屢次無迴應,取代

        存在問題:腦分裂,存在兩臺相同IP的服務器,形成網絡訪問中斷,數據的丟失或損壞

        解決方案

                一、心跳線冗餘:多接幾條

                二、採用串口線:線多,其中一條壞,會自動跳轉好的線

                三、電源交換機:使用命令斷電

    實現手段

                軟件:heartbeat、keepalived

                硬件:ROSE、安瑞科技、F5

        高可用標準(一年)

                99            99%                87.6小時        #高可用最低要求

                999            99.9%            8.8小時            #

                9999        99.99%        53分鐘            #

                99999        99.999%        5分鐘                #

    高性能運算集羣HPC

    LBC:處理請求時,直接交給其中一個節點計算

    HPC:處理請求時,拆分數據,分給其餘節點計算,再合併個HPC

    分佈式計算:拆分數據進行計算

    分佈式存儲:避免數據合併傳回的時間

    性能提高方案

    提升性能的順序:加緩存--水平擴展--加CDN--拆分業務--再上CDN

    CDN:靜態數據緩存,創建鏡像站點,加快訪問速度,智能識別訪問所在位置,選擇最近站點回復訪問

    水平擴展:多臺服務器承擔請求壓力

            DNS(負載調度器)

                一、無後端健康狀態監測

                二、DNS 服務器須要熱備 (公網DNS服務器)

                三、調度規則 RR,無特殊調度

                四、DNS緩存服務器形成的網絡訪問壓力不一致

            agent(負載調度器)

                一、支持後端健康狀態檢測

                二、支持多種調度算法

    垂直擴展:更換性能更高的硬件設備

            缺點

                一、性價比低

                二、性能提高存在瓶頸

                三、在替換過程當中,服務出現中斷,mac 表刷新須要時間

            優勢

                一、網絡拓撲無改動

    調度算法

    只能選擇一個靜態或動態算法

    調度算法分類

    靜態調度active,只根據算法自己去調度,不考慮服務器自己

            動態調度in-active,除了考慮算法自己,還要考慮服務器狀態

    靜態調度算法

    RR輪詢:

    將請求分配給後端的服務器,從第一臺服務器開始到第N臺結束,而後循環

    WRR加權輪詢:

    按照權重的比例實如今多臺主機之間進行調度(按權重值)

    SH(source hash)源地址散列:

    將同一個IP的用戶請求,發送給同一個服務器(防止用戶重複請求,如登入)

    #臨時解決cookie:本地客戶端,session:服務端重複握手自由消耗的問題

    #應用內存分頁技術,使一部份內存變爲可寫,SIP--hash--RS1,使用hash轉換爲固定長度的字符串,節省資源

    DH(destination hash)目標地址散列:

    將同一個目標地址的用戶請求發送給同一個真實服務器(提升緩存的命中率)

    #讓用戶更快的訪問到緩存所在地址

    #也是有hash計算數據提交給服務器覈對,節省資源

    動態調度算法

    LC(lest-connection)最少鏈接:

    將新的鏈接請求,分配給鏈接數最少的服務器(活動鏈接×256+非活動鏈接)

    #一個線程三個狀態:正在建立鏈接,鏈接傳輸數據,鏈接釋放以前

    #活動鏈接:鏈接傳輸數據

    #非活動鏈接:正在建立鏈接,鏈接釋放以前

    #LC算法認爲一個活動鏈接等於256個非活動鏈接

    WLC加權最少鏈接:

    特殊最少鏈接算法,權重越大承擔的請求數越多(活動鏈接×256+非活動鏈接)/權重

    SED最短時間望延遲:

    特殊的WLC算法(活動鏈接+1)*256/權重

#指定性能最好的服務器先開始接受請求

NQ永不排隊:

特殊的SED算法,無需等待,如真實服務器的鏈接數等於0那就直接分配不須要運算

#無論服務器性能好壞,優先選擇無鏈接的服務器

LBLC特殊的DH算法:

即能提升緩存命中率,又要考慮服務器性能

#設置閥值,當其中一臺緩存服務器壓力太大,自動轉移到另外一臺緩存服務器

LBLCR LBLC+緩存:

儘量提升負載均衡和緩存命中率的折中方案

#讓緩存服務器之間同步數據,減小後臺服務器壓力

特殊算法--持久化鏈接

相似於SH算法,持久鏈接優先於算法又等同於算法,一個請求先被持久鏈接計算,再被其餘算法計算,應用內存分頁技術

PCC(持久客戶端鏈接):

每客戶端持久;未來自於同一個客戶端的全部請求通通定向至此前選定的RS;也就是隻要IP相同,分配的服務器始終相同

#不管請求是何端口,都傳給同一個服務器

example:ipvsadm -A -t 172.16.0.8:80 -s wlc -p 120

PPC(持久端口鏈接):

每端口持久;未來自於同一個客戶端對同一個服務(端口)的請求,始終定向至此前選定的RS

example:ipvsadm -A -t 172.16.0.8:80 -s rr -p 120

PFMC持久防火牆標記鏈接:

未來自於同一客戶端對指定服務(端口)的請求,始終定向至此選定的RS;不過它能夠將兩個絕不相干的端口定義爲一個集羣服務

#給請求設置標籤,根據標籤,決定作持久化鏈接

example:

# iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 80 -j MARK --set-mark 10

# iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 443 -j MARK --set-mark 10

# service iptables save

# ipvsadm -A -f 10 -s wlc -p 120

ARP通訊行爲控制

ARP 響應級別

arp-ignore

        0 只要本機配置有相應 IP 地址就響應        #相鄰網卡也能響應

        1 僅在請求的目標地址配置在請求到達的網絡接口上時,纔給予響應        #只能在當前IP段局域網響應

ARP 通告行爲

arp-announce

        0 將本機任何網絡接口上的任何地址都向外通告

        1 儘量避免向目標網絡通告與其網絡不匹配的地址信息表        #只能在當前IP段局域網響應

        2 僅向目標網絡通告與其網絡相匹配的地址信息        #檢查網卡上全部網段,在進行詳細匹配

案例環境專爲LVS和HA設計的一款健康檢查工具

支持故障自動切換(Failover)

支持節點健康狀態檢查(Health Checking)

官方網站:http://www.keepalived.org/

keepalived的熱備方式

VRRP(Virtual Router Redundancy Protocol,虛擬路由冗餘協議)

一主 + 多備,共用同一個IP地址,但優先級不一樣

Heartbeat是Linux-HA工程的一個組件,自1999年開始到如今,發佈了衆多版本,是目前開源Linux-HA項目最成功的一個例子,在行業內獲得了普遍的應用

  1. LVS原理

    LVS:Linux 虛擬服務,工做在四層的負載調度器,用於四層轉發數據

    組件:ipvs:內核態,工做在內核空間,LVS 核心代碼    

    ipvsadm:用戶態,工做在用戶空間,是用戶管理LVS的惟一手段

    鉤子函數:內核一種機制,可以優先獲取數據報文的全部權

    LVS工做模式(NAT,DR,TUN)

    併發量:            DR > TUN > NAT

    配置難易度:     NAT < DR < TUN

    優先:                DR > NAT > TUN

        NAT:DNAT端口映射,SNAT局域網共享公有IP

            一、負載調度器必須是 Linux 操做系統,真實服務器節點能夠是任意操做系統

            二、真實服務器和負載調度器能夠在不一樣廣播域內,真實服務器應該把網關指向負載調度器

            三、負載調度器即負責處理入站請求又必須負責處理出站請求

            四、支持端口映射,真實服務器服務地址能夠跟集羣端口不一致

        DR:直接路由,支持千臺,超過千臺,使用硬件負載調度

            一、負載調度器與真實服務器必須是 Linux 操做系統(禁止子網卡)

            二、真實服務器與負載調度器必須處於同一個廣播域內

            三、負載調度器只負責處理入站請求

            四、真實服務器與負載調取集羣端口必須一致不支持端口映射

        TUN:隧道模式

            一、負載調度器必須是Linux操做系統,真實服務器能夠全平臺

            二、負載調度器與真實服務器必須擁有公網IP或者可以被公網IP直接路由

            三、負載調度器負載處理入站請求,出站請求由真實服務器完成

            四、不支持端口映射

  2. LVS-NAT搭建

    使用環境

            負載網關服務器:兩張網卡,一張外網口IP,一張內網口IP, yum -y install ipvsadm

            web1服務器:搭建httpd,設置內網網關,設置開機自啓動

            web2服務器:搭建httpd,設置內網網關,設置開機自啓動

            外網客戶機:不須要設置

    web1服務器

            curl localhost:8080                #查看搭建好的網站內容

    web2服務器

            curl localhost

    負載調度器-網關服務器

            modprobe ip_vs             #測試是否加載,若是沒有獲得任何信息,則已經加載

            cat /proc/net/ip_vs         #查看版本信息,以檢測是否已經開始正常工做

    service iptables start

            echo "" > /etc/sysconfig/iptables            #永久清空防火牆規則

            iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT --to-source 192.168.20.200

    #設置防火牆nat轉換規則,-s指定內網口段,-o指定外網口網卡名,--to-source外網口IP

    iptables -t nat -L                    #查看防火牆nat轉換規則

            service iptables save            #關機是也保持防火牆配置

    iptables -D -t IP:80             #清除防火牆調度規則

    chkconfig iptables on

    yum -y install ipvsadm        #安裝LVS負載調度器

            vim /etc/sysctl.conf                #開啓數據轉發

            sysctl -p                                #刷新配置文件

            ipvsadm -A -t 192.168.20.200:80 -s rr

    #添加一個調度器規則,-A添加調度器,-t指定外網口IP,-s指定算法

            ipvsadm -a -t 192.168.20.200:80 -r 192.168.10.101:8080 -m

            ipvsadm -a -t 192.168.20.200:80 -r 192.168.10.102:80 -m

    #添加集羣服務器信息,-t指定外網口IP,-r指定集羣單臺主機,-m指定NAT調度模式

            ipvsadm -Ln                        #查看調度設置規則

            chkconfig ipvsadm on    

            service ipvsadm save            #關機是也保存調度設置

            ipvsadm -Ln --stats                #查看已調度信息(次數,出入數據大小)

  3. LVS-DR搭建

    #虛擬網卡的 IP 與真實網卡的 IP 需在同 一網段,且子網掩碼爲 255.255.255.255, 且主機虛擬網卡與其餘服務器虛擬網卡 IP 相同

    #linux相臨網卡能夠互相訪問

    安裝環境:

            一臺LVS負載調度器:關閉防禦, yum -y install ipvsadm

    web1服務器:安裝httpd,啓動,設置開機自啓動

    web2服務器:跟web1同樣

        LVS負載調度器

            service NetworkManager stop         #啓動虛擬接口口,必須關閉此服務

            chkconfig NetworkManager off

            cd /etc/sysconfig/network-scripts/

            cp -a ifcfg-eth0 ifcfg-eth0:0        #更改IP爲訪問調度服務的IP

            vim /etc/sysctl.conf

                    添加:

    net.ipv4.conf.all.send_redirects = 0

    net.ipv4.conf.default.send_redirects = 0

    net.ipv4.conf.eth0.send_redirects = 0

    #修改內核參數,網卡重定向,防止相同網絡地址廣播衝突,若是有多快網卡須要設置多行 net.ipv4.conf.eth0.send_redirects = 0

            sysctl -p

            ifup eth0:0

            ipvsadm -A -t 192.168.10.222:80 -s rr

    ipvsadm -a -t 192.168.10.222:80 -r 192.168.10.100:80 -g

    #-g聲明DR模式,只處理入站請求

            ipvsadm -a -t 192.168.10.222:80 -r 192.168.10.101:80 -g

            ipvsadm -Ln                    #查看輪訓規則

            ipvsadm -Ln --stats            #查看輪訓記錄

            service ipvsadm save

            chkconfig ipvsadm on

    web1服務器

            service NetworkManager stop         #啓動虛擬藉口,必須關閉此服務

            chkconfig NetworkManager off

            cd /etc/sysconfig/network-scripts/

            cp -a ifcfg-lo ifcfg-lo:0

            vim ifcfg-lo:0            #更改IP爲訪問調度服務的IP,掩碼改成255.255.255.255,防止廣播

            vim /etc/sysctl.conf

                    修改:

                            net.ipv4.conf.all.arp_ignore = 1

    net.ipv4.conf.all.arp_announce = 2

    net.ipv4.conf.default.arp_ignore = 1

    net.ipv4.conf.default.arp_announce = 2

    net.ipv4.conf.lo.arp_ignore = 1

    net.ipv4.conf.lo.arp_announce = 2

    #關閉全部網卡的響應和通告行爲,全部數據不接受

            sysctl -p

            ifup lo:0

            route add -host 192.168.10.222 dev lo:0

    #開放10.222的IP用lo:0網卡響應

    若是是用nignx作web1網站須要修改nginx.conf

            vim /usr/local/nginx/conf/nginx.conf

                修改:

    keepalive_timeout 0;            #取消註釋

    #keepalive_timeout 65;        #開啓註釋

    web2服務器

            更web1設置同樣

  4. LVS-Keepalivde高可用

    安裝環境:

            主LVS:配置DR調度服務,導入Keepalived.iso

            從LVS:修改DR網卡方式,導入Keepalived.iso

            web1服務器:安裝httpd

            web2服務器:安裝httpd

    主LVS調度服務器

            yum -y install kernel-devel openssl-devel popt-devel gcc*

            ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-642.el6.x86_64/

            make && make install

            chkconfig --add keepalived

            chkconfig keepalived on

            vim /etc/keepalived/keepalived.conf

    注:配置文件不能有空格

                添加:

    ! Configuration File for keepalived

    global_defs {

                    router_id R1            #命名主機

    }

    vrrp_instance VI_1 {

                    state MASTER        #設置服務類型主 / 從( MASTER/SLAVE )

                    interface eth0            #指定那塊網卡用來監聽

                     virtual_router_id 60        #設置組號,只有同組才能通訊

                    priority 90                #服務器優先級,主服務器優先級高

                    advert_int 1                #心跳時間,每秒檢測對方存活,檢查負載服務器的

                    authentication {        #存活驗證密碼

            auth_type PASS

            auth_pass 1111

            }

            virtual_ipaddress {            #設置集羣地址

            192.168.10.222

            }

    }

    virtual_server 192.168.10.222 80 {        #設置集羣地址,以及端口號

                    delay_loop 3            #健康檢查間隔,檢查後端服務器的

                    lb_algo rr                    #使用輪詢調度算法

                    lb_kind DR                # DR 模式的羣集

    protocol TCP            #使用的協議

    real_server 192.168.10.100 80 {            #管理的網站節點以及使用端口

    weight 1                    #權重,優先級

    TCP_CHECK {        #狀態檢查方式

            connect_port 80        #檢查的目標端口

            connect_timeout 3    #鏈接超時(秒),多少秒檢測一次

                 nb_get_retry 3            #重試次數

            delay_before_retry 4        #重試間隔(秒)

            }

    }

    real_server 192.168.10.101 80 {        #管理的第二個網站節點以及使用端口

    weight 1

    TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 4

    }

        }

    }

            /etc/init.d/keepalived start

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

    從LVS調度服務器(跟主基本同樣)

            配置網卡信息

            ifup eth0:0

            yum -y install ipvsadm

            service ipvsadm start        #規則須要與主負載同步,因此須要啓動

    chkconfig ipvsadm on

    vim /etc/keepalived/keepalived.conf

                修改:

    router_id R1            #命名主機

    state SLAVE            #設置服務類型主 / 從( MASTER/SLAVE )

    priority 50                #服務器優先級,主服務器優先級高

            /etc/init.d/keepalived start

            chkconfig --add keepalived

            chkconfig keepalived on

網卡配置後啓動報錯須要修改網卡配置文件:註釋

                vim /etc/sysconfig/network-scripts/ifup-eth

247     #if ! ARPING=$(/sbin/arping -c 2 -w ${ARPING_WAIT:-3} -D -I ${REALDEVICE} ${ipaddr[$idx]}) ; then

248     #ARPINGMAC=$(echo $ARPING | sed -ne 's/.*\[\(.*\)\].*/\1/p')

249     #net_log $"Error, some other host ($ARPINGMAC) already uses address ${ipaddr[$idx]}."

250     #exit 1

251        #fi

擴展:

在keepalived.conf配置文件中加入如下內容:(主從轉換腳本調用)

注:執行腳本不能屏幕輸出(寫入null),判斷條件不能關於keepalived,更改須要重啓

notify_master"想要執行的腳本路徑"

#表示當切換到master狀態時,要執行的腳本

notify_backup "想要執行的腳本路徑"

#表示當切換到backup狀態時,要執行的腳本

notify_fault"想要執行的腳本路徑"

#表示切換出現故障時要執行的腳本

例:

vrrp_instance VI_1 {

                state MASTER

                interface eth1

                virtual_router_id 66

                priority 100

                advert_int 1

                authentication {

            auth_type PASS

            auth_pass 123456

}

                virtual_ipaddress {

            172.18.0.200/16

}

notify_master "/etc/keepalived/notify.sh master"

                notify_backup "/etc/keepalived/notify.sh backup"

                notify_fault "/etc/keepalived/notify.sh fault"

}

keepalived檢測腳本的做用及注意事項:

#默認每隔3秒鐘執行一次檢測腳本,檢查nginx服務是否啓動,若是沒啓動就把nginx服務啓動起來,若是啓動不成功,就把keepalived服務down掉,讓漂浮到備keepalived上

#檢測腳本必定要寫在vrrp_instance的前面也就是上面,並且花括號必定要有空格,追蹤trace_script要定在vip的後面,多少人栽在了這上面好多小時

vrrp_script check_ng {
script " /etc/keepalived/check_nginx.sh "
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.76.25/24
}
track_script {
check_ng
}
}

 

 

LVS-heartbeat高可用

heartbeat是腳本方式的高可用,設置簡單,但切換過程比較慢

安裝環境:

        web1服務器:安裝httpd,導入heartbeat.tar.gz包

        web2服務器:安裝httpd,導入heartbeat.tar.gz包

web1服務器

        vim /etc/hosts        # heartbeat須要用主機名解析切換

            添加:

192.168.10.100 server

192.168.10.101 client1

scp /etc/hosts root@192.168.10.101:/etc/hosts

tar xf heartbeat.tar.gz

cd heartbeat

        yum -y install *

        cd /usr/share/doc/heartbeat-3.0.4/

        cp -a authkeys ha.cf haresources /etc/ha.d/

        cd /etc/ha.d/

        vim authkeys            #通常使用MD5加密

            修改:

                auth 3

                #1 crc

                #2 sha1 HI!

                3 md5 Hello!

        chmod 600 authkeys

        vim ha.cf    

            修改:

    node server                #記錄高可用主機,幾個就幾條

                    node client1    

                    bcast eth0 # Linux            #聲明使用聲明網卡,冗餘多網卡

        vim haresources

            添加:

server IPaddr::10.10.10.10/24/eth0:0        #聲明主服務器訪問的IP,不能與真實機相同

        scp authkeys ha.cf haresources root@192.168.10.101:/etc/ha.d/

#web2須要先安裝heartbeat.tar.gz

        /etc/init.d/heartbeat start        #啓動高可用

web2服務器

tar xf heartbeat.tar.gz

cd heartbeat

        yum -y install *

        /etc/init.d/heartbeat start        #啓動高可用

        測試:切斷網絡,若是要檢查httpd狀態,須要腳本支持

        內容:

#!/bin/bash

PWD=/usr/local/script/jiankong

#腳本位置

URL=http://10.10.10.11/index.html

#主機真實IP鏈接

HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`

#返回主頁請求碼,http_code是curl內置變量

if [ $HTTP_CODE != 200 ]

then

                        service heartbeat stop

fi

        腳本定時任務設置

        vim /etc/crontab

            添加:

* * * * * root bash /root/heart.sh

        service crond start

        chkconfig crond on

 

 

LVS-四層+七層

安裝環境:

        LVS服務器:安裝LVS-DR模式,設置nginx服務器IP調度

        nginx1服務器:apache1和apache2同一個負載調度,apache3單獨一個負載調度

        nginx2服務器:同nginx1同樣配置,除真實IP不一樣

        apache1服務器:安裝httpd服務,設置網頁內容不一樣,方便測試

        apache2服務器:安裝httpd服務

        apache3服務器:安裝httpd服務

 

  1. squid緩存
    1. squid原理

    CDN包含

            智能 DNS

            緩存服務器:

                    Nginx:不是主流的緩存服務器

                    Varnish:用內存分頁技術讀取元數據,支持正則表達式方法清空緩存

                            特色:在小規模的應用中,性能突出

                    Squid:用磁盤存儲數據,不支持正則表達式清空,支持FTP HTTP SSL

                            特色:在大規模的應用中,性能突出

    UFS(Unix filesystem):squid採用的文件系統

            調用過程:分區下-目錄下-二級目錄下-緩存文件(object)

                    digest tables:目錄對應的索引記錄

                    hash tables:分區對應的索引記錄

    代理服務器基本類型:

    傳統代理:適用於Internet,需明確指定服務端

    透明代理:適用於共享上網網關,不需指定服務端

    反向代理:位於網站前端,代理web接受客戶端的請求

    使用反向代理的優勢:

    提升 web 站點的訪問速度(縮短訪問距離)

    隱藏服務器的真實 IP(數據被竊取)

    1. Squid配置文件詳解

      主配置文件

      軟件包:squid-2.6.STABLE21-6.el5

      系統服務:squid

      主程序:/usr/sbin/squid

      主配置文件:/etc/squid/squid.conf

      默認監聽端口:TCP 3128

      默認訪問日誌:/var/log/squid/access.log

      http_port 3128        #默認端口

      access_log /var/log/squid/access.log squid #指定日誌位置,默認配置沒有

      cache_mem 64 MB        #squid進程可以調用的最大內存數

      cache_dir ufs /var/spool/squid 100 16 256        

      #緩存目錄,緩存目錄最大使用100MB,一級目錄16個,二級目錄256個

      visible_hostname proxy.benet.com        #可見主機名

      dns_testnames www.google.com www.163.com        #指定dns,用於檢查服務是否正常運行

      maximum_object_size 4096 KB        #限制一個文件多大時,不緩存

      reply_body_max_size 10 MB        #容許訪問緩存的最大大小

      ACL( Access Control List ,訪問控制列表):

      根據源地址、目標URL、文件類型等定義ACL列表

      acl 列表名稱 列表類型 列表內容 ...

      acl     all                 src                 1.0.0.0/0.0.0.0

      針對已定義的acl列表進行限制

      http_access allow或deny 列表名稱 ...

      http_access         deny                     all

      ACL列表定義類型

      src                  源地址

      dst                      目標地址

      port                 目標端口

      dstdomain         目標域

      time                 訪問時間

      maxconn         最大併發鏈接

      url_regex         目標URL地址

      Urlpath_regex     整個目標URL路徑

      ACL注意事項

          一、容許多個類型使用同一個列表名稱進行處理

          二、若是隻設置 acl 不定義 http_access 至關於規則不存在

          三、squid 內存內置函數以及定義 all 表明全部,不能自定義使用

          四、當 all 區域不存在,而且已經定義 acl 區域,那麼此區域是否放行根據配置文件中的最後一行 http_access 反向進行操做

    2. squid傳統代理搭建

      準備環境:

              內網客戶機:設置內網網關

              外網web服務器:搭建httpd服務

              squid緩存網關:設置內外網兩張網卡

      squid緩存網關

              yum -y install squid

              vim /etc/squid/squid.conf

                  添加:在http_port下

      visible_hostname www.xdl.com            #若是不添加,訪問時會警告

              service squid start

              vim /etc/sysctl.conf

              sysctl -p

      內網客戶機測試

              linux下:/etc/profile文件添加添加

          HTTP_PROXY=HTTP://內網網關IP:3128

                      export HTTP_PROXY

                      #正常數據包沒法收到,須要配置squid做爲代理服務器

                      . /etc/profile

                      elinks 外網web服務器IP

              windows下:

                  瀏覽器—編輯—首選項—高級—連接—設置—手動代理—http網關內網 IP—3128

      直接訪問外網

      若是須要重啓squid:service squid reload

      tcpdump -nA port 80 監聽httpd服務端口

      tcpdump –nA port 80        #抓包命令

    3. squid透明代理搭建

      準備環境:

              內網客戶機:設置內網網關

              外網web服務器:搭建httpd服務

              squid緩存網關:設置內外網兩張網卡

      squid緩存網關

              yum -y install squid

              vim /etc/squid/squid.conf

                  修改:

      http_port 內網網關IP:3128 transparent

                          #正常數據包沒法收到,須要聲明squid做爲代理服務器

                  添加:在http_port下

      visible_hostname www.xdl.com    

      #若是不添加,訪問時會警告

              service squid start

              vim /etc/sysctl.conf

              sysctl -p

              iptables -t nat -A PREROUTING -i eth0( 內網網卡 ) -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128

      #藉助iptables修改80端口爲3128端口

      內網客戶機測試

      直接訪問

    4. squid反向代理搭建

      準備環境:

              內網web1服務器:搭建httpd

              內網web2服務器:搭建httpd

              外網客戶機:不須要配置

              squid緩存網關:設置內外網兩張網卡

      squid緩存網關

              yum -y install squid

              vim /etc/squid/squid.conf

                  修改:

      http_access allow all

                          #容許全部IP通行

      http_port 外網網關IP:80 vhost

                          #開啓反向代理模式

      添加:在http_port下

                          cache_peer 內網192.168.10.100 parent 80 0 originserver round-robin

      #添加緩存池,parent指上游服務器,0指是否有其餘squid服務器,originserver節點,round-robin只支持輪訓

                          cache_peer 內網192.168.10.101 parent 80 0 originserver round-robin

      visible_hostname www.xdl.com    

      #若是不添加,訪問時會警告

              service squid start

              vim /etc/sysctl.conf

              sysctl -p

      內網客戶機測試

      直接訪問

  2. ISCSI網絡存儲
    1. 存儲原理

    存儲方式的分類

            塊存儲

                    優勢:

                            一、實現較爲簡單成本較低

                            二、經過 raid 能夠顯著的提升磁盤讀寫性能

                    缺點

                            一、共享問題

                            二、文件系統侷限問題

            文件存儲(CIFS/NFS/FTP)

                    優勢

                            一、通常來講文件存儲服務器都是使用單臺服務器構建成本低廉

                            二、文件系統由文件共享服務處理,不須要本地文件系統處理,跨平臺程度高

                    缺點

                            一、讀寫性能較差

            對象存儲/雲存儲/分佈式存儲

    將元數據信息與真實數據信息分開保存,METADATA存儲數據的元數據信息以及 CHUNKSERVER保存文件真實數據信息

    存儲網絡的分類(軟件)

            DAS:直接附加存儲        對象:塊存儲

            NAS:網絡附加存儲        對象:文件存儲

            SAN:存儲區域網絡        對象:對象存儲,網絡級別的塊存儲

    硬件存儲解決方案:HP-EMC2

    去OME

            O:oracle

            M:IBM小型機

            E:EMC2

    RHCS對象組成

    RHCS 紅帽集羣套件        intofy+rsync 高性能版本

            CMAN 用於發送集羣消息

            CCS     集羣配置工具

    RGMANAGER 集羣控制器 控制集羣啓動關閉隔離,柵設備

    GFS2:第二版全局文件系統 集羣文件系統

    CLVM:集羣邏輯卷組

    1. 時間同步服務器搭建

      準備環境:

              一臺時間服務器

              一臺同步客戶機

      時間服務器

              yum -y install ntp

      ntpdate cn.pool.ntp.org        #同步網絡時間

              date -s 2018-08-28

              date -s 15:26:30

              vim /etc/ntp.conf

                  修改:

                          restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

                          註釋server區域

                  添加:

      server 127.127.1.0

      fudge 127.127.1.0 stratum 10

              service ntpd start

              chkconfig ntpd on

      同步客戶機

              yum -y install ntpdate

              ntpdate -u 192.168.10.100

              crontab -e

                  添加:

                          0 */2 * * * /usr/sbin/ntpdate -u 192.168.10.100 &>/dev/null

              service crond start

              chkconfig crond on

              date

    2. ISCSI網絡塊存儲搭建

      準備環境:

              ISCSI服務器:搭建時間服務,添加新硬盤

              共享客戶機:與服務器同步時間

      永久設置:

      ISCSI服務器

              fdisk -l

              pvcreate /dev/sdb

              vgcreate vg0 /dev/sdb

              lvcreate -L 1G -n lv0 vg0

              mkfs -t ext4 /dev/vg0/lv0

              yum -y install scsi-target-utils        #安裝ISCSI主服務器服務

              vim /etc/tgt/targets.conf

                  添加:

      <target iqn.2018-08.server:lvm>        #設置iqn標籤,至關於ISCSI服務主機名

      backing-store /dev/vg0/lv0                #聲明磁盤位置

      initiator-address 192.168.10.100        #運行訪問IP

      </target>

              service tgtd start

              chkconfig tgtd on

              tgtadm -L iscsi -o show -m target            #查看ISCSI的服務的LUN是否設置成功

      共享客戶機

              yum -y install iscsi-initiator-utils        #服務端ISCSI工具

              iscsiadm -m discovery -t st -p 192.168.10.100        #查看服務端的共享目錄

              iscsiadm -m node -T iqn.2018-08.server:lvm --login        #登入ISCSI服務

              fdisk /dev/sdb            #給邏輯卷分區

              mkfs.ext4 /dev/sdb1

      mkdir /scsi

      mount /dev/sdb1 /scsi/

              df -h

              取消ISCSI

                  umount /scsi/

                  iscsiadm -m node -T iqn.2018-08.server:lvm --logout

      臨時命令設置

      ISCSI服務器

              yum -y install scsi-target-utils

      pvcreate /dev/sdb

              vgcreate vg0 /dev/sdb

              lvcreate -L 1G -n lv0 vg0

              mkfs.ext4 /dev/vg0/lv0

              partprobe /dev/vg0/lv0

              service tgtd start

              netstat -anpt | grep tgtd

              tgtadm -L iscsi -o new -m target -t 1 -T iqn.2018-08.server:lvm

              tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/vg0/lv0

              tgtadm -L iscsi -o show -m target

      共享客戶機

              iscsiadm -m discovery -t st -p 192.168.10.100

              iscsiadm -m node -T iqn.2018-08.server:lvm --login

              fdisk /dev/sdb

              mkfs.ext4 /dev/sdb1

              mount /dev/sdb1 /scsi/

              df -h

  3. RHCS紅帽集羣存儲搭建

    軟件版本:

    scsi-target-utils-1.0.24-3.el6_4.x86_64

    iscsi-initiator-utils-6.2.0.873-2.el6.x86_64

    cman-3.0.12.1-49.el6_4.1.x86_64

    rgmanager-3.0.12.1-17.el6.x86_64

    gfs2-utils-3.0.12.1-49.el6_4.1.x86_64

    lvm2-cluster-2.02.98-9.el6.x86_64

    準備環境:

            server服務器:搭建時間同步服務器,ssh免密登入,添加新硬盤

            client1服務器:

            client2服務器:

            client3服務器:

    server服務器

    vim /etc/hosts

                添加:

                        192.168.10.101 client1

    192.168.10.102 client2

    192.168.10.103 client3

    192.168.10.100 server

            scp /etc/hosts root@192.168.10.101:/etc/

            scp /etc/hosts root@192.168.10.102:/etc/

            scp /etc/hosts root@192.168.10.103:/etc/

            alias ha='for I in {1..3}; do'            #設置別名,變量ha匹配1,2,3做爲主機名匹配

            ha ssh client$I 'touch /root/1.txt'; done        #批量給客戶機添加文件,做爲測試

            yum install -y scsi-target-utils        #安裝ISCSI主服務器服務

            vim /etc/tgt/targets.conf

                添加:

    <target iqn.2018-08.server:lvm>        #設置iqn標籤

    <backing-store /dev/sdb>            #指定共享磁盤

    vendor_id test                        #發行商號,任意

    lun 6                                    #LUN號

    </backing-store>

    incominguser iscsiuser iscsiuser        #設置用戶密碼認證

    initiator-address 192.168.10.0/24     #設置容許的訪問網段

    </target>

            service tgtd start

            tgtadm --lld iscsi --mode target --op show            #查看設置好的ISCSI服務

            ha ssh client$I 'yum -y install iscsi-initiator-utils'; done            #批量安裝客戶機服務端ISCSI服務

            ha ssh client$I 'service iscsi start'; done            #更改完客戶機配置文件後啓動

            ha ssh client$I 'chkconfig iscsi on'; done

            ha ssh client$I 'iscsiadm -m discovery -t st -p 192.168.10.100:3260'; done

    #查看客戶機可否找到服務器ISCSI服務共享磁盤

            ha ssh client$I 'iscsiadm -m node -T iqn.2018-08.server:lvm -p 192.168.10.100 -l'; done

    #批量使客戶端登入服務端服務

            ha ssh client$I 'service iscsi restart'; done

            ha ssh client$I 'chkconfig iscsi on'; done

            ha ssh client$I 'yum install -y cman rgmanager'; done

    #須要關閉NetworkManager和自啓動

    #cman用於發送集羣消息,CCS     集羣配置工具

    #rgmanager集羣控制器,控制集羣啓動關閉隔離,柵設備,其中一臺服務器掛了,隔離

    #去客戶機進行操做建立集羣,以後再進行如下操做

    ha ssh client$I 'yum install -y lvm2-cluster'; done

    # CLVM:集羣邏輯卷組,使客戶機其中一臺設置完邏輯卷組,其它客戶機也能收到

            ha ssh client$I 'lvmconf --enable-cluster'; done        #開啓邏輯卷組集羣功能,不是啓動

            ha ssh client$I 'grep "locking_type = 3" /etc/lvm/lvm.conf'; done

        #查看邏輯卷組是否識別到

            ha ssh client$I 'service clvmd start'; done

            ha ssh client$I 'chkconfig clvmd on'; done

            ha ssh client$I 'chkconfig cman on'; done

            ha ssh client$I 'chkconfig rgmanager on'; done

            ha ssh client$I 'yum install -y gfs2-utils'; done

    # GFS2:第二版全局文件系統,集羣文件系統,提供集羣鎖的集羣功能

            ha ssh client$I 'service gfs2 start'; done

    client1服務器

            vim /etc/iscsi/initiatorname.iscsi

                修改:

                        InitiatorName=iqn.2018-08.server:lvm

            vim /etc/iscsi/iscsid.conf

                修改:

                        node.session.auth.authmethod = CHAP

                        node.session.auth.username = iscsiuser

                        node.session.auth.password = iscsiuser

    #去服務器執行操做

            ccs_tool create testcluster        #建立名爲testcluster的集羣

            ccs_tool addfence meatware fence_manual

    #建立名爲meatware的柵設備,當集羣有損壞是用柵設備隔離

            ccs_tool lsfence        #查看柵設備是否添加

            ccs_tool addnode -n 1 -f meatware client1        #添加集羣節點

            ccs_tool addnode -n 2 -f meatware client2        

            ccs_tool addnode -n 3 -f meatware client3

            ccs_tool lsnode        #查看羣節點

            cd /etc/cluster/

            cat cluster.conf        #查看配置文件是否正確

            scp cluster.conf root@client2:/etc/cluster/        #批量修改其它客戶機配置文件

            scp cluster.conf root@client3:/etc/cluster/

            service cman start        #在客戶機啓動,不然可能報錯,cman集羣節點之間能夠通訊了

    #去主服務器配置

            pvcreate /dev/sdb

            vgcreate clustervg /dev/sdb

            pvs        #其它客戶機也能夠查看到

            lvcreate -L 10G -n clusterlv clustervg

            lvs

            mkfs.gfs2 -j 2 -p lock_dlm -t testcluster:sharedstorage /dev/clustervg/clusterlv

    #-j指定日誌文件,-p指定鎖表類型,-t指定鎖表名稱

            #虛擬機有些沒法完成,由於IO模型不支持

            # mkfs.gfs2 -h查看幫助

            #-J指定日誌區域的大小,默認爲128MB

            mkdir /iscsi

            mount -t gfs2 /dev/clustervg/clusterlv /iscsi/

    # gfs2_tool gettune /mydata查看掛載目錄的屬性

            # gfs2_tool settune /mydata new_files_jdata 1最經常使用,設置是否馬上同步到磁盤的,通常設置爲1,下面咱們就來設置一下

    gfs2_tool journals /iscsi        #查看日誌文件,默認爲128MB

            gfs2_jadd -j 1 /dev/clustervg/clusterlv        #新增日誌文

    client2服務器

            vim /etc/iscsi/initiatorname.iscsi

                修改:

                        InitiatorName=iqn.2018-08.server:lvm

            vim /etc/iscsi/iscsid.conf

                修改:

                        node.session.auth.authmethod = CHAP

                        node.session.auth.username = iscsiuser

                        node.session.auth.password = iscsiuser

            service cman start

            pvs

            lvs

            mkdir /iscsi

            mount -t gfs2 /dev/clustervg/clusterlv /iscsi/

    client3服務器

            vim /etc/iscsi/initiatorname.iscsi

                修改:

                        InitiatorName=iqn.2018-08.server:lvm

            vim /etc/iscsi/iscsid.conf

                修改:

                        node.session.auth.authmethod = CHAP

                        node.session.auth.username = iscsiuser

                        node.session.auth.password = iscsiuser

            service cman start

            pvs

            lvs

            mkdir /iscsi

            mount -t gfs2 /dev/clustervg/clusterlv /iscsi/

    擴展集羣邏輯卷

            lvs

            lvextend -L 15G /dev/clustervg/clusterlv    #從10G增長到15G

            df -h

            gfs2_grow /dev/clustervg/clusterlv        #擴展邏輯邊界

            df -h

  4. MFS分佈式存儲
    1. MFS原理

      MFS:MooseFS是一個具有冗餘容錯功能的分佈式網絡文件系統,它將數據分別存放在多個物理服務器或單獨磁盤或分區上,確保一份數據有多個備份副本,然而對於訪問MFS的客戶端或者用戶來講,整個分佈式網絡文件系統集羣看起來就像一個資源同樣,從其對文件系統的狀況看MooseFS就至關於UNIX的文件系統

      數據塊的存儲:單個塊的存儲大小爲 64MB,文件小於 64 MB,採用單獨塊進行存儲。多餘則申請多個塊進行存儲,但都知足一個特色,16進制

                一、只有第一個塊用完之後才容許寫入第二個塊

                二、剩餘塊空間不容許在利用

    組成結構

    管理服務器:managing server 簡稱 master

    這個組件的角色是管理整個mfs文件系統的主服務器,除了分發用戶請求外,還用來存儲整個文件系統中每一個數據文件的metadata信息,metadate(元數據)信息包括文件(也能夠是目錄,socket,管道,塊設備等)的大小,屬性,文件的位置路徑等

    元數據備份服務器:Metadata backup servers 簡稱metalogger

    這個組件的做用是備份管理服務器master的變化的metadata信息日誌文件,文件類型爲changelog_ml.*.mfs。以便於在管理服務器出問題時,能夠通過簡單的操做便可讓新的主服務器進行工做

    數據存儲服務器組:data servers(chunk servers)簡稱data

    這個組件就是真正存放數據文件實體的服務器了,這個角色能夠有多臺不一樣的物理服務器或不一樣的磁盤及分區來充當,當配置數據的副本多於一份時,據寫入到一個數據服務器後,會根據算法在其餘數據服務器上進行同步備份

    客戶機服務器組:(client servers)簡稱 client

    這個組件就是掛載並使用mfs文件系統的客戶端,當讀寫文件時,客戶端首先會鏈接主管理服務器獲取數據的metadata信息,而後根據獲得的metadata信息,訪問數據服務器讀取或寫入文件實體,mfs客戶端經過fuse mechanism實現掛載mfs文件系統的,所以,只有系統支持fuse,就能夠做爲客戶端訪問mfs整個文件系統

    MFS 優勢:

    高可靠性:

    每一份數據能夠設置多個備份(多分數據),並能夠存儲在不一樣的主機上

    高可擴展性:

    能夠經過增長主機的磁盤容量或增長主機數量來動態擴展整個文件系統的存儲量

    高可容錯性:

    當數據被刪除後的一段時間內,依舊存放於主機的回收站中,以備誤刪除恢復數據

    高數據一致性:

    即便文件被寫入、訪問時,咱們依然能夠輕鬆完成對文件的一致性快照

    MFS缺點:

    master目前是單點,雖然會把數據信息同步到備份服務器,可是恢復須要時間

    master服務器對主機的內存要求略高

    默認metalogger複製元數據時間較長(可調整)

    內存使用問題:

    對於master服務器來講,資源型要求就是內存大小,爲了整個系統訪問更快,mfs會把因此訪問的元數據metadada信息放在內存中提供用戶訪問,所以,當文件數量增長時,內存使用量就會增長,根據官方說法,處理一百萬個文件chunkserver,大概須要300M的內存空間。據此,推算若是將來要出來1個億的文件chunkserver,大概須要30G內存空間

    MFS工做方式

        遍歷

    client 發起遍歷請求至 Master,Master查詢元數據信息返回給 Client,Client 接收展現

        獲取文件

        一、client 發起文件請求至 Master端,Master查詢文件的 IP/PORT/ID 信息返回給 Client

        二、client 鏈接對應的服務器獲取數據

        刪除文件

        一、client 發起刪除文件請求至 Master端

    二、Master刪除對應的元數據信息,並向後端真實服務器添加異步刪除任務,當到達指定時間後,chunkserver 刪除對應真實數據,返回刪除成功至 master

        建立文件

        一、client 向 Master 服務器發起新建文件請求,發送相關元數據信息如大小文件名

                二、Master 向後端 chunkserver 選舉節點,併發送建立新塊的請求

                三、chunkserver 建立完成新塊之後,發送新塊的 IP/PORT/ID 至 Master 服務器

                四、Master 發送新塊地址信息至 client

                五、client 鏈接至新塊地址進行寫入,寫入完成後,發送關閉文件信息至 Master

    六、Master 接收到關閉信息後,鏈接至對應chunkserver 進行查詢請求,修改最終元數據的大小最後修改時間等

        修改文件

    一、client 向 master 發起修改文件請求

                二、master 檢索內存信息確認 chunkserver 地址,鏈接至 chunkserver 進行拷貝塊請求(將源數據塊拷貝至新塊-1),將新塊-1 port,ip,id 信息發送至 client

                client 鏈接 新塊-1 進行對應修改

                        若是數據無變化

                                當客戶端關閉文件請求發送至 master 後

    Master 鏈接 chunkserver 檢測數據塊內容是否有變化,無變化刪除新塊-1 修改元數據中的最終訪問時間

                        若是數據有變化

    master 服務器鏈接 chunkserver 申請 新塊-2 知足 新塊-1 的容量,將新塊-1 數據拷貝至 新塊-2 ,刪除源塊以及 新塊-1 更新本身的元數據信息

    1. 配置文件詳解

              /usr/local/mfs/etc/mfs/mfsmaster.cfg

                      WORKING_USER = mfs

      WORKING_GROUP = mfs

      SYSLOG_IDENT = mfsmaster

      #在 syslog 中的表示,說明這是 mfsmaster 產生的

      LOCK_MEMORY = 0

      #是否執行 mlockall() 以免 mfsmaster 內存溢出(默認爲 0 )

      NICE_LEVEL = -19

      #運行的優先級(默認 -19 ,注意,這進程必須是 root 啓動 )

      DATA_PATH = /usr/local/mfs/var/mfs

      #數據存放路徑,該目錄下有三大類文件,changelog,sessions,stats

      EXPORTS_FILENAME = /usr/local/mfs/etc/mfs/mfsexports.cfg

      #被掛載目錄以及其權限控制文件的存放位置

      BACK_LOGS = 50

      #元數據的改變日誌文件數量(默認是 50 )

      MATOML_LISTEN_HOST = *

      #元數據日誌服務器監聽的 IP 地址(默認是 * ,表明任何 IP )

      MATOML_LISTEN_PORT = 9419

      #元數據日誌服務器監聽的端口地址,默認是 9419

      MATOCS_LISTEN_HOST = *

      #用於存儲服務器( Chunk Server )鏈接的 IP 地址

      MATOCS_LISTEN_PORT = 9420

      #是存儲服務器( Chunk server )鏈接的端口地址

      REPLICATIONS_DELAY_INIT = 300

      #延遲複製的時間(默認是 300 )

      CHUNKS_LOOP_MIN_TIME = 300

      # chunks的迴環率

      CHUNKS_SOFT_DEL_LIMIT = 10

      CHUNKS_WRITE_REP_LIMIT = 2,1,1,4

      #在一個循環裏複製到一個 CHUNK Server 的最大 chunks 數目

      CHUNKS_READ_REP_LIMIT = 10,5,2,5

      MATOCL_LISTEN_HOST = *

      MATOCL_LISTEN_PORT = 9421

      /usr/local/mfs/etc/mfs/mfsexports.cfg            #表示MFSMETA文件系統,設置掛載點權限

      rw.alldirs,maproot=0         #表示客戶端擁有的權限

      權限部分選項以下:

      ro                 #只讀模式共享

      rw                 #讀寫方式共享

      alldirs             #容許掛載任何指定的子目錄

      maproot         #映射爲root用戶仍是指定的用戶

      password     #指定客戶端密碼

      /usr/local/mfs/var/mfs/metadata.mfs         #存儲元數據信息的持久化目錄

      元數據持久化

      一、當 Master Server 啓動後將 /usr/local/mfs/var/mfs 下的 metadata.mfs加載至內存中並更名爲 metadata.mfs.back

      二、新建 changelog.*.mfs 文件用於進行增量保存的文件,完整備份保存至 metadata.mfs.back

      可以使用最大空間

      官方提示當 MFS 剩餘資源在 1GB 是整個 MFS 系統中止寫入類型請求。可是,社區實測在 百分之九十五 時中止寫入,1.9GB

      goal值設置

              一、默認 goal 值爲 2

              二、goal 必須不大於當前 chunkserver 節點數量

              三、當 chunkserver 損壞後,會從新選一臺進行同步,並儘量保證數量爲設置的 goal 值

    2. MFS搭建

      準備環境

              導入:moosefs-3.0.84-1.tar.gz壓縮包

              MFS-master服務器:yum -y install zlib zlib-devel gcc gcc-c++

              MFS-log服務器:yum -y install zlib zlib-devel gcc gcc-c++

              MFS-chunk1服務器:添加硬盤,yum -y install zlib zlib-devel gcc gcc-c++

              MFS-chunk1服務器:添加硬盤,yum -y install zlib zlib-devel gcc gcc-c++

              MFS-fuse客戶機:yum -y install zlib zlib-devel gcc gcc-c++ fuse fuse-devel fuse-libs

      MFS-master服務器

              useradd mfs -s /sbin/nologin

              tar xf moosefs-3.0.84-1.tar.gz

      ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

      make && make install

      chown -R mfs.mfs /usr/local/mfs/

              ln -s /usr/local/mfs/bin/* /usr/local/bin

              ln -s /usr/local/mfs/sbin/* /usr/local/sbin/

              cd /usr/local/mfs/etc/mfs/

              cp -a mfsmaster.cfg.sample mfsmaster.cfg            #主服務文件

              cp -a mfsexports.cfg.sample mfsexports.cfg        #掛載點文件

              vim mfsexports.cfg

                  添加:

      192.168.10.0/24 rw,alldirs,maproot=0         #定義客戶端權限

              cp -a ../../var/mfs/metadata.mfs.empty ../../var/mfs/metadata.mfs        #元數據文件

              mfsmaster start

      中止master server,安全中止master server是很是必要的,千萬不要kill,而是利用自帶的命令mfsmaster來安全中止master server , mfsmaster stop,咱們安裝後採用默認的配置,沒有作任何更改,因此默認的日誌是寫入/var/log/messages

              mfscgiserv start        #服務自帶web監控端,須要時啓動

              瀏覽器:http://192.168.10.100:9425

      /usr/local/mfs/sbin/mfsmaster -a            #若是啓動不了,執行這條命令修復

      MFS-log服務器

              useradd mfs -s /sbin/nologin

              tar xf moosefs-3.0.84-1.tar.gz

              ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

              make && make install

              chown -R mfs.mfs /usr/local/mfs/

              ln -s /usr/local/mfs/bin/* /usr/local/bin/

              ln -s /usr/local/mfs/sbin/* /usr/local/sbin/

              cd /usr/local/mfs/etc/mfs/

              cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg        #日誌文件

              vim mfsmetalogger.cfg

                  修改:

                          META_DOWNLOAD_FREQ = 2            #同步時間

                          MASTER_HOST = 192.168.10.100

              mfsmetalogger start

              lsof -i :9419        #查看端口狀態,ESTABLISHED,正在傳送數據

      MFS-chunk1服務器

              useradd mfs -s /sbin/nologin

              tar xf moosefs-3.0.84-1.tar.gz

              ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

              make && make install

              chown -R mfs.mfs /usr/local/mfs/

              ln -s /usr/local/mfs/bin/* /usr/local/bin/

              ln -s /usr/local/mfs/sbin/* /usr/local/sbin/

              cd /usr/local/mfs/etc/mfs/

              cp mfschunkserver.cfg.sample mfschunkserver.cfg        #chunk文件,至關於集羣節點

              vim mfschunkserver.cfg

                  修改:

      HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg

                          #聲明磁盤文件定義位置

                          MASTER_HOST = 192.168.10.100

                          MASTER_PORT = 9420

              mkdir /mnt/sdb1

              cp -a mfshdd.cfg.sample mfshdd.cfg        #配置磁盤供給文件

      vim /usr/local/mfs/etc/mfs/mfshdd.cfg

      添加:

      /mnt/sdb1        #最後位置添加,記得添加硬盤

              fdisk /dev/sdb

              partprobe        #刷新

              mkfs.ext4 /dev/sdb1

              mount /dev/sdb1 /mnt/sdb1/

              chown -R mfs.mfs /mnt/sdb1/

              mfschunkserver start

              ps -ef | grep mfs

      MFS-chunk2服務器

              設置與1同樣

      MFS-fuse客戶機

              useradd mfs -s /sbin/nologin

      tar xf moosefs-3.0.84-1.tar.gz

              ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver && make && make install

              ln -s /usr/local/mfs/bin/* /usr/local/bin

              ln -s /usr/local/mfs/sbin/* /usr/local/sbin/

              mkdir /mnt/mfs

              mfsmount /mnt/mfs/ -H 192.168.10.100        #掛載MFS共享磁盤

              cd /mnt/mfs

              echo 1231123 > index.html

              chown -R mfs.mfs index.html

              mfsfileinfo index.html                            #具體查看文件備份個數

              mfsgetgoal index.html                            #查看文件備份個數

              mfsgettrashtime index.html                #查看文件保持時間

              mfssettrashtime 60000 index.html        #設置保存時間,要麼0,要麼大於6000秒

      測試:

                  誤刪除處理,垃圾回收站機制

                          rm -rf index.html

                          mfssettrashtime 64800 /mnt/mfs/test    #設置保存時間,要麼0,要麼大於6000秒

                          mkdir /back            #建立第三方掛載點

                          chown mfs.mfs /back

                          mfsmount -m /back -H 10.10.10.11        #-m指定元數據

                          cd /back

                          find . -name *txt*

                          mv 002/00000002\|1.txt /back/trash/undel/

                          umount /back

                          查看恢復文件

      快照功能        #至關於指針,不會佔用多餘的數據塊

                          mkdir bb

                          chown mfs.mfs bb/

                          mfsmakesnapshot 1.txt bb/        #建立快照

                          cd bb/

                          ll

      冗餘goal設置        #goal是備份文件次數

                          mfssetgoal 3 /mnt/mfs/test1        #設置test1文件備份次數

                          mfsgetgoal /mnt/mfs/test1        #查看test1文件的goal值

      mfsfileinfo /mnt/mfs/test1        #查看test1文件的具體goal值

      還原 master

                          複製log服務器的日誌到master下:

                          scp * root@192.168.10.100:/usr/local/mfs/var/mfs/

                          mfsmaster start        #啓動報錯

                          mfsmaster -a            #-a自動修復,3.0之前是-u

      注意:

                  #恢復數據只要change.*.mfs的最後一個和metadata.mfs.back兩個文件

                  #恢復須要中止mfsmaster程序後,執行mfsmetarestore -m和mfsmaster -ai修復

                  #備份時最好中止mfsmaster

  5. 集羣監控
    1. cacti監控搭建

    NMS:網絡管理系統

    收集數據

    snmp簡單網絡管理協議

                        V1:功能簡單

                        V2:身份認證

                        V3:加密

    OID:身份認證標識,一串代碼,確認索要收集的數據

    mibs:管理信息庫,/usr/share/snmp/mibs能夠查看文件內OID

    展現數據

    cacti    展現數據:

        繪圖工具:RRDTOOL

        數據收集工具:SNMP

        框架:LAMP

                        圖形展現:rrdtool

                        展現框架:cacti

    流量與性能監測爲主:顯示之前的信息,不報警

    http://www.cacti.net/

    準備環境:

            主服務器:導入cacti.iso ,yum -y install httpd mysql mysql-server mysql-devel libxml2-devel mysql-connector-odbc perl-DBD-MySQL unixODBC php php-mysql php-pdo

                                yum -y install gcc gcc-c++

            被監控機:導入cacti.iso ,yum -y install net-snmp net-snmp-utils lm_sensors

    主服務器

            yum -y install net-snmp net-snmp-utils net-snmp-libs lm_sensors    #若是須要監控本身,安裝

    service mysqld start        #設置開機自啓

            mysqladmin -uroot password 123

    service httpd start        #設置開機自啓

    tar xf rrdtool-1.4.5.tar.gz        #安裝圖形展現

            ./configure --prefix=/usr/local            #會報錯

            tar -xf cgilib-0.5.tar.gz        #接口處理函數

            cd cgilib-0.5

            make

            cp libcgi.a /usr/local/lib/

            cp cgi.h /usr/include/            #標準圖函數

            yum -y install libart_lgpl-devel

            yum -y install pango-devel* cairo-devel*

            cd rrdtool-1.4.5

            ./configure --prefix=/usr/local

            make && make install

            tar xf cacti-0.8.7g.tar.gz        #安裝展現框架

            mv cacti-0.8.7g /var/www/html/cacti

            cd /var/www/html/cacti

            patch -p1 -N < ~/cacti/data_source_deactivate.patch        #升級補丁

            patch -p1 -N < ~/cacti/graph_list_view.patch

            patch -p1 -N < ~/cacti/html_output.patch

            patch -p1 -N < ~/cacti/ldap_group_authenication.patch

            patch -p1 -N < ~/cacti/script_server_command_line_parse.patch

            patch -p1 -N < ~/cacti/ping.patch

            patch -p1 -N < ~/cacti/poller_interval.patch

            useradd runct        #添加檢測數據的用戶帳戶,更改權限,保證讀寫數據正常

            chown -R root.root ./

            chown -R runct.runct rra/ log/

            mysql -uroot -p

                設置:

    create database cactidb default character set utf8;

                        grant all on cactidb.* to 'cactiuser'@'localhost' identified by '123';

            mysql -u cactiuser -p cactidb < cacti.sql        #導入數據庫文件

            vim include/config.php

                修改:

    $database_type = "mysql";

    $database_default = "cactidb";

    $database_hostname = "localhost";

    $database_username = "cactiuser";

    $database_password = "123";

    $database_port = "3306";

            vim /etc/httpd/conf/httpd.conf

                修改:

    DocumentRoot "/var/www/html/cacti"

    <Directory "/var/www/html/cacti">

    options None

    AllowOverride None

                        Order allow,deny

                        Allow from all

    </Directory>

    DirectoryIndex index.php index.html

            service httpd restart

            打開瀏覽器操做http://192.168.216.16/install

            snmpwalk -v 2c -c public 192.168.10.101 system        #測試數據獲取鏈接

            php /var/www/html/cacti/poller.php        #啓動php解析,使網頁圖片顯示

            vim /etc/crontab

                添加:

    */5 * * * * root /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null

            service crond start

            chkconfig crond on

            tar xf cacti-plugin-0.8.7g-PA-v2.8.tar.gz        #添加插件管理器Plugin Management

            cd cacti-plugin-arch/

            mysql -u cactiuser -p cactidb < pa.sql

            cd /var/www/html/cacti/

            patch -p1 -N < ~/cacti-plugin/cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.8.diff

            cd plugins

            tar xf ~/cacti-plugin/monitor-0.8.2.tar.gz        #添加monitor插件

            mysql -u cactiuser -p cactidb < monitor/monitor.sql

            刷新瀏覽器,看看是否處理,從新添加插件

            chown -R apache.apache plugins        #web訪問,設置apache權限

    被監控機

            vim /etc/snmp/snmpd.conf

                修改:

                        com2sec notConfigUser default public        #修改共同體

                        access notConfigGroup "" any noauth exact all none none        #修改all

                        view all included .1 80        #取消註釋

    service snmpd start

    chkconfig snmpd on

    其它配置

    配置識別插件

    Utilities -- User Management -- admin -- Plugin Management -- save

    Configuration -- Plugin Management -- Actions 添加插件 (thold需單獨點擊)

    未出現圖標,則:

    Utilities -- User Management -- admin -- View Thresholds 和 View Monitoring 打鉤

    9、配置Monitor

    Configration -- setting -- misc -- 將最後一行改成Tiles -- save

    10、配置Thold

    Configration -- setting -- Thresholds -- Dead hosts Notifications 後 添加 告警郵箱

    From Email Address 後添加 指定發件人地址 -- 選中 send alerts as text 表示純文本發送郵件

    11、設置SMTP,DNS等

    Configration -- setting -- Mail/DNS -- 測試用的收信地址、SMTP、發送人郵件地址、發送人名稱(Cacti_System)、120

    12、添加檢測項目

    Templates -- Threshold Templates -- ucd/net-CPU Usage-User -- High Threshold 設置爲85

    告警閾值默認計量單位:

    cpu 使用率 爲 百分比(不包含該值)

    網卡流量 Byte/s

    硬盤空間 KB

    內存佔用 KB

    也能夠設置多個告警項,同時可生效 如 內存低於50MB而且下載流量超過80MB/s

    十3、查看告警

    Management -- Thresholds -- thold

    1. nagios原理

      nagios

      繪圖工具:PHP GD

      數據收集工具:腳本+插件

      框架:靜態頁面 + JS + perl

      服務與性能監測爲主:當前狀態監測,會報警,不顯示之前狀態http://www.nagios.org/

      報警等級: OK WARNING critical嚴重警告 unknown pending正在鏈接

      監控對象

      主機,主機組:windows必需要設置主機組

      服務/資源,服務組:CPU,內存

      聯繫人,聯繫人組:報警,發郵件

      時段:指定時間內監控,報警

      命令:經過定義不一樣命,令定義不一樣服務

      nagios core logic:核心進程

      plugin:插件管理器

      check_***:nagios默認的腳本命名方式

      check_xyz:主動發起掃描,部署對應的腳本或命令,收集數據

      check_by_ssh:服務器發起請求,客戶機主動發起掃描,收集數據

      check_nrpe:用在類Unix之上,服務器發起請求,客戶機主動發起掃描,收集數據

      snmp:沒法收集的數據經過snmp收集

      NSCA:主動提交數據的,只能當輔助收集數據使用

      針對不一樣操做系統,nagios收集數據方式

      依賴拓撲圖:把多臺監控機定義成依賴關係,NMS監控一個設備收集報警信息

      flaping:定義報警閥值,默認三次

    2. nagios監控搭建

      準備環境

              主監控服務器:導入nagios.iso,yum -y install httpd gcc* glibc glibc-common *gd* php php-mysql openssl openssl-devel

              linux客戶機:導入nagios.iso,yum -y install openssl openssl-devel gcc*

              windows客戶機:看系統安裝NSClient++-0.3.8-x64.msi

      主監控服務器

      useradd nagios

      groupadd nagcmd        #必須建立

              usermod -a -G nagcmd nagios        #添加組成員

              usermod -a -G nagcmd apache

              tar zxf nagios-3.1.2.tar.gz

              ./configure --with-command-group=nagcmd --enable-event-broker

              make all

              make install

              make install-init

      make install-config

              make install-commandmode

              make install-webconf

              htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin        #必須是nagiosadmin

              service httpd restart

              tar zxf nagios-plugins-1.4.15.tar.gz         #安裝插件管理器

              cd nagios-plugins-1.4.15

              ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-mysql --enable-perl-modules

              make

              make install

              chkconfig --add nagios

              chkconfig nagios on

              /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg        #檢查配置文件

              service nagios start

              瀏覽器登入:http://your_nagios_IP/nagios

              tar xf nagios-nrpe_2.8.1.tar.gz            #須要openssl

              ./configure --enable-ssl --with-ssl-lib=/usr/lib64/

              make all

              make install-plugin

              vim /usr/local/nagios/etc/objects/linux.cfg        #建立linux監控配置文件

                  添加:

      define host{

                           use         linux-server

                           host_name             linux/IP

                           alias         linux

                           address 192.168.10.101(客戶端IP既被監控的IP)

                          }

                          define service{

                              use                 generic-service

                              host_name     linux

                              service_description     check-load

                           check_command     check_nrpe!check_load

                          }

                          define service{

                              use generic-service

                              host_name linux

                           service_description check-users

                           check_command check_nrpe!check_users

                          }

                          define service{

                              use generic-service

                              host_name linux

                              service_description         otal_procs

                              check_command     check_nrpe!check_total_procs

                          }

              vim /usr/local/nagios/etc/objects/commands.cfg

                  添加:

                          define command{

                              command_name check_nrpe

                              command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

                          }

              vim nagios.cfg

                  添加:

      cfg_file=/usr/local/nagios/etc/objects/linux.cfg

              /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

              service nagios restart

      linux 端監控

      useradd nagios

              tar zxf nagios-plugins-1.4.15.tar.gz

      #爲了安裝 nrpe,先安裝 nagios-plugins-1.4.15.tar.gz 插件

              cd nagios-plugins-1.4.15

              ./configure --with-nagios-user=nagios --with-nagios-group=nagios

              make all

              make install

              tar -zxvf nrpe-2.8.1.tar.gz

              ./configure --enable-ssl --with-ssl-lib=/usr/lib64/

              make all

              make install-plugin

              make install-daemon

              make install-daemon-config

              vim /usr/local/nagios/etc/nrpe.cfg

                  修改:

      allowed_hosts=192.168.10.100,127.0.0.1        #添加服務器IP

              /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d    #檢測是否有誤而且運行

      windos 端監控

      被監控端安裝 NSClient++-0.3.8-Win32.msi

      在監控服務器上修改:

      vim /usr/local/nagios/etc/agios.cfg

          取消註釋:

      cfg_file=/usr/local/nagios/etc/objects/windows.cfg

      vim /usr/local/nagios/etc/objects/windows.cfg

          修改IP:

      address 192.168.10.1        #被監控IP

    3. zabbix監控

      原理

      zabbix    是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案 ( 基於 GPL V2 ),必須以源碼包形式售賣

      Zabbix:可用經過圖像展現須要保留的任何數據,以及經過觸發器設置對應服務、資源的可控性

      zabbix由 2 部分構成,zabbix server與可選組件zabbix agent

                      收集數據方式:C/S、SNMP

                      繪製圖像工具:PHP-GD

                      展現平臺:LAMP

      五個主要程序

      zabbix 安裝完成後會產生 5 個程序:zabbix_agentd,zabbix_get、zabbix_proxy,zabbix_sender,zabbix_server,zabbix_java_gateway是可選,這個須要另外安裝

      zabbix_agentd:客戶端守護進程,此進程收集客戶端數據,例如 cpu負載、內存、硬盤使用狀況等

      zabbix_get:zabbix 工具,單獨使用的命令,一般用於排錯

      zabbix_sender:zabbix工具,用於發送數據給 server 或者 proxy ,在腳本完成以後使用 sender 主動將數據提交

      zabbix_server:zabbix 服務端守護進程,全部的數據都是被提交或主動提交到 zabbix_server 端

      zabbix_proxy:zabbix代理守護進程。功能相似server,惟一不一樣的是它只是一箇中轉站,它須要把收集到的數據提交/被提交到server裏

      zabbix_java_gateway:zabbix2.0以後引入的一個功能。顧名思義:Java網關,相似agentd,可是隻用於Java方面。須要特別注意的是,它只能主動去獲取數據,而不能被動獲取數據。它的數據最終會給到server或者proxy

      安裝準備:

              主服務器:

              客戶機1:

              客戶機2:

              ......

              windows客戶機

      主服務器(rh7)

              systemctl stop firewalld

              systemctl disable firewalld

              setenforce 0

              sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

              wget http://mirrors.163.com/.help/CentOS7-Base-163.repo        #或導入CentOS7-Base-163.repo

              yum clean all

              yum makecache

              yum -y install mariadb mariadb-server httpd php php-mysql

              systemctl start httpd

              systemctl enable httpd

              systemctl enable mariadb

              systemctl start mariadb

              mysql_secure_installation        #初始化數據庫,並設置密碼

              rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

              #或導入zabbix-release-3.2-1.el7.noarch.rpm

              rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX        #yum認證

              yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent    #或導入已有安裝包

              mysql -u root -p

                  設置:

      CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

                      grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

              cd /usr/share/doc/zabbix-server-mysql-3.2.11/

              zcat create.sql.gz | mysql -uroot -p zabbix        #解壓並導入數據庫

              vim /etc/zabbix/zabbix_server.conf

                  修改:

      DBHost=localhost

                          DBName=zabbix

                          DBUser=zabbix

                          DBPassword=zabbix

              systemctl start zabbix-server

              systemctl enable zabbix-server

              vim /etc/httpd/conf.d/zabbix.conf        #能夠修改zabbix網頁配置文件,最好不更改

                  修改:

                          php_value max_execution_time 300

                          php_value memory_limit 128M

                          php_value post_max_size 16M

                          php_value upload_max_filesize 2M

                          php_value max_input_time 300

                          php_value always_populate_raw_post_data -1

                          php_value date.timezone Asia/Shanghai

              yum -y install ntpdate        #配置時間同步器,參考以前的

              ntpdate cn.pool.ntp.org        #同步網絡時間

              systemctl restart httpd

              瀏覽器:http://192.168.231.100/zabbix        #用戶名Admin,密碼數據庫密碼

      客戶機1

              導入zabbix-agent-3.2.6-1.el6.x86_64.rpm

      yum -y install zabbix-agent-3.2.6-1.el6.x86_64.rpm

      vim /etc/zabbix/zabbix_agentd.conf

                  修改:

      Server= 192.168.231.100

                          ServerActive= 192.168.231.100

                          Hostname=192.168.231.10

              service zabbix-agent start

              chkconfig zabbix-agent on

              添加主機:配置-主機-建立主機-主機名稱--可見名稱--添加或建立組--IP地址

                                  模板-選擇- Template ICMP Ping- Template OS Linux-選擇-添加-添加

      客戶機2

              與客戶機配置同樣

      windows客戶機

              解壓zabbix_agents_3.2.0.win (1).zip

              移動到C盤更名爲zabbix

              修改conf下文件,與linux設置同樣

              打開cmd命令提示符

                  設置:

                          c:\ zabbix\bin\win64\zabbix_agentd.exe -c c:\ zabbix\conf\zabbix_agentd.win.conf -i

          #將進程添加到

                          c:\ zabbix\bin\win64\zabbix_agentd.exe -c c:\ zabbix\conf\zabbix_agentd.win.conf -s

      #開啓服務

              web監控網站上添加windows規則

      更改成中文

              點擊右上角人頭-language-Chinese-uptake

      解決亂碼問題

              Win+R    >    fonts    >    拷貝微軟雅黑字體更名爲 msyh.ttf > /usr/share/zabbix/fonts

              chmod 755 msyh.ttf

      vim /usr/share/zabbix/include/defines.inc.php

          修改:

      define('ZBX_GRAPH_FONT_NAME', 'msyh');

      設置報警聲音

              點擊右上角人頭-正在發送信息-前端信息中-播放聲音-勾選全部

      配置 web 場景

      配置-主機-應用集-建立應用集-web場景-建立web場景-名稱-應用集-客戶端-步驟-名稱-URL-要求的狀態碼

      觸發器-建立觸發器-名稱-嚴重性-表達式添加-監控項-選添加的場景(數字類型)-功能(不等於)-N(200)-表達式(and 012)-可寫描述

      配置自動發現規則

              準備多臺已經按照agent的客戶機,修改過配置文件,以便自動查找到

              配置-自動發現-建立發現規則-名稱-IP範圍-延時(5)-檢查(ICMP ping)-啓用關閉-添加

              配置-動做-事件源(自動發現)-建立動做-名稱-觸發條件(主機IP)(主機在線>=5)-計算方式(和)-操做(刪除內容)-新的(主機)(主機組)(與模板關聯ping linux)(啓用主機)-添加-啓用自動發現規則

      配置監控 Nginx 併發量腳本(自定義腳本)

              安裝nginx,配置status模塊

              ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

      vi /usr/local/nginx/conf/nginx.conf

      location /abc {

      stub_status on;

      }

      導入腳本nginx-status.sh

      在客戶端添加自定義腳本規則,放入/etc/zabbix/zabbix_agentd.d/

      vim /etc/zabbix/zabbix_agentd.conf

          修改:

      UnsafeUserParameters=1

      UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx-status.sh $1

              service zabbix-agent restart

              chkconfig zabbix-agent on

      在服務器端安裝zabbix-get

              zabbix_get -s 192.168.231.10 -k 'nginx.status[ping]'        #測試客戶端

              瀏覽器:配置-模板-導入-選擇文件

              配置-主機-建立主機-名稱-組-IP地址-模板-選擇(導入的那個,linux,ping)-添加-添加

      配置聚合圖形

      監測中-聚合圖形-名稱-添加-選擇(設置的名稱)-編輯聚合圖形

      連接釘釘報警

              vim /etc/zabbix/zabbix_server.conf

                      查看:

      AlertScriptsPath=/usr/lib/zabbix/alertscripts        #查看腳本放入位置

      導入腳本token.sh到/usr/lib/zabbix/alertscripts

              複製釘釘機器人密碼,更改腳本

              chmod +x token.sh

              瀏覽器:管理-報警媒介類型-建立媒介類型-名稱-類型(腳本)-腳本名稱-(導入的腳本)-腳本參數-{ALERT.SENDTO}-添加-{ALERT.SUBJECT}-添加-{ALERT.MESSAGE}-添加

              配置-動做-事件源(觸發器)-建立動做-名稱-新的觸發條件(>=,觸發器示警度,警告)-添加-計算方式(和)-操做-默認接收人(故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!)-默認信息(

      告警主機:{HOSTNAME1},告警時間:{EVENT.DATE} {EVENT.TIME}

      告警等級:{TRIGGER.SEVERITY}

      告警信息: {TRIGGER.NAME}

      告警項目:{TRIGGER.KEY1}

      問題詳情:{ITEM.NAME}:{ITEM.VALUE}

      當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}

      事件 ID:{EVENT.ID}

      )-操做-新的-步驟持續事件(60)-操做類型(發送信息)-發送到用戶羣組-發送到用戶-僅送到(釘釘)-添加-恢復操做-與以前同樣(

      恢復{TRIGGER.STATUS}, 服務器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!

      告警主機:{HOSTNAME1}

      告警時間:{EVENT.DATE} {EVENT.TIME}

      告警等級:{TRIGGER.SEVERITY}

      告警信息: {TRIGGER.NAME}

      告警項目:{TRIGGER.KEY1}

      問題詳情:{ITEM.NAME}:{ITEM.VALUE}

      當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}

      事件 ID:{EVENT.ID}

      )-添加-添加

      管理-用戶-admin-報警媒介-類型-收件人(手機號)-取消(未分類,信息)-添加-更新

  6. 網絡批量裝機
    1. PXE

    原理:

    網卡支持:PXE協議,自帶網卡ROM,記錄DHCP客戶端,TFTP客戶端,PXE客戶端DHCP只能是服務器搭建的,不能用其餘網絡設備,由於須要記錄TFTP的IP

    PEXlinux.0:引導文件目錄,系統鏡像中存在這個目錄,才能使用網絡批量安裝

    pexlinux.cfg:linux安裝配置文件是linux初始安裝界面

    vmlinuz:虛擬內存壓縮的運行空間,至關於PE,在內存中運行

    initrd.img:最基礎的文件系統,用於運行vmlinuz

    準備環境

            主服務器:有圖形化環境,yum -y install vsftpd dhcp tftp syslinux tftp-server

    主服務器

            cd /var/ftp/pub/

            mkdir dvd

            chown ftp.ftp dvd/

            cp -a /mnt/dvd/* dvd/

            vim /etc/dhcp/dhcpd.conf

                添加:

                        subnet 192.168.10.0 netmask 255.255.255.0 {

        range 192.168.10.50 192.168.10.60;

    option routers 192.168.10.100;

    next-server 192.168.10.100;        #TFTP服務端地址

    filename "pxelinux.0";                 #iso鏡像引導目錄,名字固定

    }

            vim /etc/xinetd.d/tftp

                修改:

                        server_args = -s /tftpboot            #指定tftp目錄

                        disable = no

    mkdir -p /tftpboot/pxelinux.cfg

            cp /var/ftp/pub/dvd/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default    #系統安裝信息

            cp /usr/share/syslinux/pxelinux.0 /tftpboot/

            chmod 644 /tftpboot/pxelinux.cfg/default

            cp /var/ftp/pub/dvd/isolinux/* /tftpboot/

            service dhcpd restart

            chkconfig dhcpd on

            service xinetd restart        #tftp被xinetd管理

            chkconfig xinetd on

            service vsftpd restart

            chkconfig vsftpd on

            vim /tftpboot/pxelinux.cfg/default

                修改:

                        default linux

                        append initrd=initrd.img ks=ftp://192.168.10.100/pub/ks.cfg #指定vsftp位置

            yum -y install system-config-kickstart        #圖形化安裝信息文件包

    進入圖形化操做

    system-config-kickstart

        修改:

                基本配置:root密碼

                                    安裝後從新引導

                安裝方法:FTP安裝

                        FTP服務器:ftp://192.168.10.100

                        FTP目錄:pub/dvd

                引導裝載:安裝新引導

                                    MBR

                分區信息:清除主引導記錄

                                    刪除全部分區

                                    初始化磁盤標籤

                                    添加新佈局        #磁盤分區

                防火牆:禁用

                軟件包選擇:隨便選一個

                安裝後腳本:/bin/bash

                                        touch /root/1.txt

    保存退出

            vim anaconda-ks.cfg        #複製軟件包到生成的ks.cfg中

            cp ks.cfg /var/ftp/pub/

    保證須要在同一個廣播域中

    1. cobbler

      Cobbler

      1、cobbler 簡介

      Cobbler是一款自動化操做系統安裝的實現,與PXE安裝系統的區別就是能夠同時部署多個版本的系統,而PXE只能選擇一種系統

      2、cobbler 的安裝

      yum install -y epel-release            #安裝yum源,須要聯網,更新太快

      yum install -y cobbler cobbler-web pykickstart debmirror

      systemctl restart httpd

      systemctl restart cobblerd

      netstat -an | grep 25151

      vim /etc/cobbler/settings

          修改:

      server 服務器IP

      next_server 服務器IP

      cobbler get-loaders            #將配置文件同步到應該所在的目錄下

      systemctl enable rsyncd

      vim /etc/debmirror.conf

          註釋:

      #@dists="sid";

      #@arches="i386";

      openssl passwd -1 -salt $(openssl rand -hex 4)        #系統加密方案與cobbler一致

      vim /etc/cobbler/settings

          修改:

      default_password_crypted 加密字符串

      yum install cman fence-agents        #安置柵設備軟件,隔離已安置的系統

      yum -y install xinetd            #centos7中默認沒安裝xinetd服務

      vim /etc/xinetd.d/tftp

          修改:

      disabled改成no

      systemctl restart cobblerd

      cobbler sync        #同步文件

      cobbler check

      yum install -y dhcp

      vim /etc/dhcp/dhcpd.conf

          添加:

      option domain-name "chinasoft.com";

      option domain-name-servers 114.114.114.114,8.8.8.8;

      default-lease-time 43200;

      max-lease-time 86400;

      log-facility local7;

      subnet 20.0.0.0 netmask 255.0.0.0 {

      range 20.20.10.10 20.20.10.240;

      option routers 20.20.20.20;

      }

      next-server 20.20.20.20;

      filename="pxelinux.0";

      systemctl restart dhcpd

      systemctl enable tftp

      systemctl enable dhcpd

      systemctl start tftp

      systemctl restart cobblerd

      mount /dev/cdrom /media

      cobbler import --name="centos6.5-x86_64" --path=/media/        #自動導入系統鏡像

      #能夠經過訪問:http://IP/cobbler/ 看到文件列表,複製鏡像共享路徑

      vim centos6.5-x86_64.cfg

          修改:

              usr --usrl="網頁鏡像路徑"

      cobbler distro list        #查看ks文件列表,默認有一個自帶的

      cobbler profile remove --name ks文件名        #刪除ks文件

      cp centos6.5-x86_64.cfg /var/lib/cobbler/kickstarts/

      cd /var/lib/cobbler/kickstarts/

      cobbler profile add --name=centos6.5-x86_64-basic --distro=centos6.5-x86_64 --

      kickstart=/var/lib/cobbler/kickstarts/centos6.5-x86_64.cfg

      #指定ks名稱,指定鏡像名稱,以前上傳的名稱,指定ks文件路徑

      cobbler profile list

      cobbler sync

      cobbler profile remove --name=centos6.7-x86_64        #刪除ks文件

      cobbler distro remove --name=centos6.7-x86_64        #刪除鏡像

      注:不一樣的ks文件能夠指向相同的鏡像,修改ks文件內容,可用腳本添加裝機服務

  7. 防火牆配置
    1. 防火牆簡介

    防火牆:工做在主機邊緣處或網絡邊緣處對進出的數據報文根據規則處理的模塊或者機制, 從而保護網絡的安全

    做用對象:IP地址,MAC地址,端口,協議類型,數據包中的數據

    防火牆分類

            功能分類

                    基礎類防火牆:根據數據包報文的結構特徵進行對應處理的模塊

                            IDS 防火牆:入侵檢測系統 提供過後分析(跳板機,堡壘機)

                            IPS 防火牆:入侵防護系統 攔截問題數據報文,防禦涉及範圍廣(防毒牆)

                    主動類防火牆:只防護一種應用程序

                            waf:web應用程序防火牆

                            daf:數據庫應用程序防火牆

                            ddos攻擊抵禦

    結構分類

                    軟件:360、iptables

                    硬件:網禦 深信服 360網擎

    工做模式分類

                    包過濾防火牆:mac port ip status

                    應用層防火牆:huostname url

    性能指標:吞吐量,溫度

    1. iptables簡介

      工做層級

      netfilter是內核態模塊,位於Linux內核中的包過濾功能體系

      iptables用戶態工具,位於/sbin/iptables,用來管理防火牆規則的工具

      centos6:用戶態iptables,用戶態netfilter    

      centos7:用戶態firewalld,用戶態netfilter

      規則

              自定義規則:ACCEPT 、 REJECT 、 DROP 、SNAT

              默認規則(缺省值、兜底):ACCEPT DROP

      順序

      規則順序:自上而下依次匹配,匹配即中止

              書寫規則順序:有相關,小的放前。無相關,大的放前

              表的順序:raw > mangle > nat > filter

              鏈的順序

                      入站:PREROUTING > INPUT

                      出站:     OUTPUT > POSTROUTING

                      轉發:PREROUTING > FORWORD > POSTROUTING

      鏈:承載規則的地方

                  INPUT:處理入站數據包

                  OUTPUT:處理出站數據包

                  FORWORD:處理轉發數據包

                  POSTROUTING:在進行路由選擇後處理數據包 DNAT

                  PREROUTING:在進行路由選擇前處理數據包 SNAT

          表:承載鏈

                  raw:路由跟蹤

                  mangle:標記、修改

                  nat:路由轉換

                          SNAT:利用單獨公網 IP 給內網用戶提供訪問公網的能力

                          DNAT:端口映射

                  filter:數據報文過濾

    2. iptables命令

      iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型]

              注:不指定表名時,默認指filter表

      不指定鏈名時,默認指表內的全部鏈

      除非設置鏈的默認策略,不然必須指定匹配條件

      選項、鏈名、控制類型使用大寫字母,其他均爲小寫

      若是系統被從新引導,這些規則就會自動被清除並重設。

      sbin/service iptables save

      保存在 /etc/sysconfig/iptables

      控制類型

              ACCEPT:容許經過

      DROP:直接丟棄,不給出任何迴應

      REJECT:拒絕經過,必要時會給出提示

      LOG:記錄日誌信息,而後傳給下一條規則繼續匹配

      SNAT:修改數據包源地址

      DNAT:修改數據包目的地址

      REDIRECT:重定向

      -t 指定要使用的表

      例:

                iptables -A INPUT -p tcp --dport 80 -j DROP        #最後添加規則,丟棄80端口數據包

                iptables -I INPUT -p tcp --dport 443 -j ACCEPT        #最前添加規則,放行443端口數據包

                iptables -I INPUT 3 -p tcp --dport 44 -j ACCEPT        #添加規則到第三行

                iptables -L -n -v --line-numbers            #查看防火牆規則

                iptables -D INPUT 3                #刪除指定行規則

                iptables -t filter -P INPUT ACCEPT        #修改指定鏈默認規則,只能改成ACCEPT,DROP

    通用匹配

    可直接使用,不依賴於其餘條件或擴展

    包括網絡協議、IP地址、網絡接口等條件

    常見的通用匹配條件

    協議匹配:-p 協議名

    地址匹配:-s 源地址、-d 目的地址

    接口匹配:-i 入站網卡、-o 出站網卡

    例:

    # iptables -A FORWARD -s 192.168.1.11 -j REJECT

    # iptables -I INPUT -s 10.20.30.0/24 -j DROP

    # iptables -I INPUT -p icmp -j DROP                                #禁止全部icmp

    # iptables -A FORWARD -p ! icmp -j ACCEPT                 #除icmp其它均可以

    # iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP

    隱含匹配

    要求以特定的協議匹配做爲前提

    包括端口、TCP標記、ICMP類型等條件

    經常使用的隱含匹配條件

    端口匹配:

    --sport 源端口、--dport 目的端口

    ICMP類型匹配:--icmp-type ICMP類型

    例:

    # iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT

    # iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT

    # iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT        #0回顯

    # iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT        #3目的主機無響應

    #組成拒絕其它icmp,主機能夠ping其它主機

    # iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

    #組成拒絕其它icmp,主機能夠ping其它主機,能夠只配這一條

    # iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT    #容許ping

    顯式匹配

    要求以"-m 擴展模塊"的形式明確指出類型

    包括多端口、MAC地址、IP範圍、數據包狀態等條件

    經常使用的顯式匹配條件

    多端口匹配:    -m multiport --sport 源端口列表

        -m multiport --dport 目的端口列表

    IP範圍匹配:    -m iprange --src-range IP範圍

    MAC地址匹配:-m mac –mac1-source MAC地址

    狀態匹配:-m state --state 鏈接狀態

    # iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT

    # iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT

    # iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP

    # iptables -I INPUT -p tcp -m multiport --dport 80-82,85 -j ACCEPT

    # iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    #ESTABLISHED正在鏈接,RELATED相關鏈接

    # iptables -I INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

    #放在規則第一條能夠加快訪問速度

    1. SNAT/DNAT應用

      SNAT策略的典型應用環境

      局域網主機共享單個公網IP地址接入Internet

      SNAT策略的原理

      源地址轉換,Source Network Address Translation

      修改數據包的源地址

      前提條件

      局域網各主機正確設置IP地址/子網掩碼

      局域網各主機正確設置默認網關地址

      Linux網關支持IP路由轉發

      開啓sysctl路由轉發

      實現方法:編寫SNAT轉換規則

      iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31

      地址假裝

      MASQUERADE —— 地址假裝

      #適用於外網 IP地址 非固定的狀況(真是環境應該用)

      #對於ADSL 撥號鏈接,接口一般爲 ppp0、ppp1

      #將SNAT規則改成 MASQUERADE 便可

      iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

      DNAT策略的典型應用環境

      在Internet中發佈位於企業局域網內的服務器

      DNAT策略的原理

              目標地址轉換,Destination Network Address Translation

      修改數據包的目標地址

      前提條件

      局域網的Web服務器可以訪問Internet

      網關的外網IP地址有正確的DNS解析記錄

      開啓sysctl路由轉發

      實現方法

      編寫DNAT轉換規則

      iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6

      發佈時修改目標端口

      在DNAT規則中以"IP:Port"的形式指定目標地址

      iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 2346 -j DNAT --to-destination 192.168.1.6:22

    2. Centos7更改Firewalliptables

      yum -y install iptables-services

      systemctl start iptables

      systemctl enable iptables

  8. selinux

    SELinux是Linux的一個擴張強制訪問控制的安全模塊

    SELinux=NSA(MAC)+Linux

            NAS:美國國家安全局

            MAC:強制訪問控制,可以保證每個進程都運行在安全的最小集合的狀態下—>最小權限集合

    發展:

            2.2à須要手動加載的一個外部模塊

            2.4à直接寫到內核的一個模塊

            2.6à成爲了一部分Linux發行版的內核的一部分

    特性:

    在SELinux中,訪問控制屬性叫作安全上下文。全部客體(文件、進程間通信通道、套接字、網絡主機等)主體(進程)都有與其關聯的安全上下文,一個安全上下文由三部分組成:用戶、角色和類型標識符。經常用下面的格式指定或顯示安全上下文

    四層防護控制

            iptables:應用在內核

            selinux:操做繁瑣

            tcpwarpper:應用在用戶空間,浪費資源

    acl:應用在用戶空間,浪費資源

    控制類型

            強制訪問控制:在rwx後,還要匹配規則庫

            任意訪問控制:rwx 擁有就可以執行對應功能

    用戶:角色:類型,

    chcon [-R] [-t type] [-u user] [-r role] 文件

    選項與參數:

         -R :連同該目錄下的次目錄也同時修改;

         -t :後面接安全性本文的類型字段!

         -u :後面接身份識別,例如 system_u;

         -r :後面接角色,例如 system_r;

    例:chcon -R -t httpd_sys_content_t /data         #修改類型

    selinux(行爲控制工具,對內部應用)

    注:由於seLinux是內核等級設置,須要重啓系統才能生效

    配置文件位置:/etc/selinux/config

    setenforce 0                    #臨時關閉防禦,0是半關閉,1是開啓

    SELINUX=enforcing        #開啓防禦

    SELINUX=disabled            #關閉防禦

    SELINUX=permissive        #清空規則設置

    getenforce         #查看當前selinux狀態

    ll -Z                 #查看當前用戶,角色,類型,類型一致才能訪問

    restorecon         #還原成原有的SELinux type

    格式:restorecon [-Rv] 檔案或目錄

    選項與參數:

         -R :連同次目錄一塊兒修改;

         -v :將過程顯示到屏幕上

    Managing Boole(管理SElinux布爾值)

    SEliux布爾值就至關於一個開關,精確控制SElinux對某個服務的某個選項的保護

    getsebool -a            #命令列出系統中可用的SELinux布爾值

    setsebool –p samba_enable_home_dirs=1            

    #開啓家目錄共享,setsebool命令用來改變SELinux布爾值

    #若是對服務,查看目錄類型能夠查看配置文件

  9. 虛擬化技術
    1. 原理

      虛擬化,是指經過虛擬化技術將一臺計算機虛擬爲多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每一個邏輯計算機可運行不一樣的操做系統,而且應用程序均可以在相互獨立的空間內運行而互不影響,從而顯著提升計算機的工做效率,解決服務器的資源浪費

    分類

    全虛擬化技術

    徹底虛擬化技術又叫硬件輔助虛擬化技術,最初所使用的虛擬化技術就是全虛擬化(Full Virtualization)技術,它在虛擬機(VM)和硬件之間加了一個軟件層--Hypervisor,或者2VMM)

    一、hypervisor 直接運行在物理硬件之上 - KVM 硬件須要支持虛擬化,效率達到98%

    二、hypervisor 運行在另外一個操做系統中 - QEMU 和 WINE,不須要硬件支持虛擬化,由內核提供的虛擬化機制

    半虛擬化技術

    也叫作準虛擬化技術。它就是在全虛擬化的基礎上,把客戶操做系統進行了修改,增長了一個專門的API,這個API能夠將客戶操做系統發出的指令進行最優化,即不須要Hypervisor耗費必定的資源進行翻譯操做,所以Hypervisor的工做負擔變得很是的小,所以總體的性能也有很大的提升。

    寄居架構

    就是在操做系統之上安裝和運行虛擬化程序,依賴於主機操做系統對設備的支持和物理資源的管理;

    優勢:簡單,便於實現

    缺點:安裝和運行應用程序依賴於主機操做系統對設備的支持

    舉例:GSX Server, VMware Server, Workstation

    裸金屬架構

    就是直接在硬件上面安裝虛擬化軟件,再在其上安裝操做系統和應用,依賴虛擬層內核和服務器控制檯進行管理

    優勢:虛擬機不依賴於操做系統,能夠支持多種操做系統,多種應用,更加靈 活

    缺點:虛擬層內核開發難度較大

    舉例:VMWare ESX Server

    1. vmware EXSI安裝和應用

      安裝環境

                  服務器:安裝VMware-VMvisor-Installer-6.0.0-2494585.x86_64

                  客戶機:安裝VMware-viclient-all-6.0.0

      服務器

              配置網卡IP,6版本必須設置網關

      客戶機

                破解輸入密鑰:清單--配置--已得到的許可--添加

            添加虛擬機:清單--地址池--添加虛擬機

            添加鏡像方法1:清單--系統--光驅(讀取本地主機鏡像)

            添加鏡像方法2:清單--地址池--配置--存儲(瀏覽數據存儲)--建立文件夾--上傳鏡像(鏡像存儲於虛擬機內)

            資源分配(把系統分給不一樣的用戶管理):清單--地址池--新建資源分配--將系統拉入資源池--地址池--用戶--添加--主頁--角色--添加角色(賦給權限)--主頁--資源池--權限--添加權限

            虛擬機通電自啓動:清單--配置--虛擬機啓動/關機--屬性(修改啓動延時和啓動類型)

            添加網橋(交換機):清單--配置--網絡--添加網絡(下一步)--屬性--添加網卡(能夠用來作san網絡,分擔網絡壓力)

            查看性能與生成報表:清單--性能--選擇查看類型--保存

            直通設備:把硬件直接交給虛擬機使用

  10. 容器虛擬化
    1. docker原理

    雲計算軟件

            IaaS:基礎設施及服務(花對應的錢買的對應的容器,安裝好操做系統的雲主機)

            PaaS:平臺及服務(購買到一個已經部署好運行環境的雲主機)

            SaaS:軟件及服務(購買後能夠經過b/s方式訪問對應服務)

    Docker來源

    Docker 是 dotcloud 公司開源的一款產品 dotcloud 是 2010 年服務,新成立的一家公司,主要基於 Paas ( Platfrom as a Service ) 平臺爲開發者提供,2013 年 10 月 dotcloud 公司更名爲 Docker 股份有限公司

    Docker定義

    Linux Container 是一種內核虛擬化技術,能夠提供輕量級的虛擬化,以便隔離進程和資源

    Docker 是 PaaS 提供商 dotCloud 開源的一個基於 LXC(Linux Container) 的高級容器引擎,源代碼託管在 Github 上, 基於 GO (GO天生支持對併發)語言並聽從 Apache2.0 協議開源,開發的一款管理引擎

    Docker 與 傳統虛擬化的差別

        vmm    docker

    內核級別的隔離                                                容器級別的隔離

                浪費大量資源(虛擬系統)                            基本不消耗資源(至關於進程消耗的資源)

            獨立lib庫                                                            共享內核的lib庫

            耗時                                                                    快速

    Docker 自身組件

    容器:已經運行的虛擬機,已經運行的環境(鏡像在Docker中運行)

    鏡像:封裝的運行環境

    倉庫:存放鏡像的地方(網易蜂巢或官方https://hub.docker. com)

    Docker運行環境

            docker只能運行在linux中

            最好按照在centos7中

            全部軟件須要更新

    Docker特性與運行方式

            鏡像下載有層級關係

    最大不超過128層

            上層優先級大於下層(數據讀取會自上而下,哪一個先獲取,就是哪一個設置)

    已有的分層只能讀不能修改

    運行容器:至少擁有一個位於前臺的進程,不然會退出

    1. Docker安裝

      第一種安裝方法:

      添加 Docker 源,並安裝

      cat >/etc/yum.repos.d/docker.repo <<-EOF

      [dockerrepo]

      name=Docker Repository

      baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF

      yum install docker-engine

      yum install docker

      第二種安裝方法:

      更新操做系統至最新內核(非必要): yum update

      執行 Docker 安裝腳本: curl -sSL https://get.docker.com/ | sh

      啓動 Docker 服務

      systemctl start docker

      systemctl enable docker

      docker run hello-world        #檢查安裝成功

      docker ps        #顯示正在運行的容器

      docker ps -a        #顯示全部容器,容器名,鏡像名

      #後臺進程運行前臺方法,tailf、daemon off

      docker run hello-world        #下載鏡像

      docker rm 容器名稱        #刪除容器,容器ID不須要寫全,3-4位便可

      加速器安裝

              阿里雲Docker官網:https://dev.aliyun.com/search.html        #註冊帳號

      cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service        #配置文件

      chmod 777 /etc/systemd/system/docker.service

      vim /etc/systemd/system/docker.service

          添加:

      ExecStart=/usr/bin/dockerd-current --registry-    mirror=https://kfp63jaj.mirror.aliyuncs.com

      #老版本docker與新版本有些不同

      systemctl daemon-reload        #從新加載進程,才能生效

      systemctl restart docker

      ps -ef | grep docker            #查看進程,驗證是否生效

      安裝wordpress博客

      WordPress 運行環境須要以下軟件的支持:

      PHP 5.6 或更新軟件

      MySQL 5.6 或 更新版本

      Apache 和 mod_rewrite 模塊

      docker pull mariadb

      docker pull wordpress

      docker run --name db --env MYSQL_ROOT_PASSWORD=example -d mariadb

      #name命名,env環境變量,d放入後臺運行

      docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress

      #容器每次啓動會隨機分配一個IP地址,link綁定數據庫,wordpress依賴mariadb,mariadb先啓動,p是DNAT

      安裝GitLab

      #版本控制器,面向開發,代碼多個主線,在主線上開放支線,開發人員在支線上修改代碼,測試成功後與主線合併進行發佈

      支持的軟件:

      postgresql

      redis 緩存服務

      gitlab 服務

      啓動 postgresql:

      docker run --name gitlab-postgresql -d \

      --env 'DB_NAME=gitlabhq_production' \

      --env 'DB_USER=gitlab' --env 'DB_PASS=password' \
      sameersbn/postgresql:9.4-12

      啓動 Redis:

      docker run --name gitlab-redis -d sameersbn/redis:latest

      啓動 gitlab:

      docker run --name gitlab -d \

      --link gitlab-postgresql:postgresql --link gitlab-redis:redisio \

      --publish 10022:22 --publish 10080:80 \

      --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \

      --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \

      sameersbn/gitlab:8.4.4        #系統默認用戶名:root 密碼:5iveL!fe

    2. Docker經常使用命令

    Docker 三個重要概念:倉庫 (Repository)、鏡像 (image) 和 容器 (Container)

    docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress

    Docker 指令的基本用法:

    docker + 命令關鍵字(COMMAND) + 一系列的參數

    docker info                #顯示守護進程的系統資源

    #storage Driver存儲驅動版本,overlay2第二版分層文件系統,穩定,效率高,可修改

    docker search imageID            #Docker 倉庫的查詢,用戶名/鏡像名:版本,最好選官方的

    docker pull imageID                #Docker 倉庫的下載

    docker images                        #Docker 鏡像的查詢

    docker rmi imageID/鏡像名:版本    #Docker    鏡像的刪除,-f強制刪除

    docker ps                                            #正在運行容器的查詢,-a查詢全部容器

    docker run                                            #容器的建立啓動

    docker start/stop 容器別名/ID            #容器啓動中止

    docker load -i 鏡像名                        #導入鏡像

    # Docker 指令除了單條使用外,還支持賦值、解析變量、嵌套使用

    單一容器管理

    #每一個容器被建立後,都會分配一個 CONTAINER ID 做爲容器的惟一標示,後續對容器的啓動、中止、修改、刪除等全部操做,都是經過 CONTAINER ID 來完成,偏向於數據庫概念中的主鍵

    docker ps --no-trunc                            #查看完整版本的容器ID號

    docker stop/start CONTAINERID     #中止

    docker run --restart=always             #容器的自動啓動

    docker ps -a -q                                    #只查看容器ID

    docker rm $(docker ps -a -q)                #刪除全部容器,-f強制刪除

    docker start/stop MywordPress         #經過容器別名啓動/中止    

    docker inspect MywordPress         #查看容器全部基本信息,網橋IP和docker IP

    docker logs MywordPress                 #查看容器日誌

    docker stats MywordPress             #查看容器所佔用的系統資源

    docker exec 容器名 容器內執行的命令     #容器執行命令

    docker exec -it 容器名 /bin/bash                 #登入容器的bash

    遠程ssh鏈接方法

            docker exec -it 容器名 /bin/bash

            安裝passwd服務,修改密碼

            修改ssh遠程鏈接配置,開啓密碼認證

            開啓容器,使用DNAT轉換 任意端口:22

            鏈接:ssh 服務器IP 任意端口

    多容器管理

    Docker 提倡理念是 "一個容器一個進程",假設一個服務須要由多個進程組成,就須要多個容器組成一個系統,相互分工和配合對外提供完整服務

    Docker compose:容器編排工具,容許用戶在一個模板(YAML格式)中定義一組相關聯的容器,會根據 --link 等參數,對啓動的優先級進行排序

    Docker compose 的安裝:

    curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-uname -m` > /usr/local/bin/docker-compose

    chmod +x /usr/local/bin/docker-compose

    docker-compose --version

    mv wordpress.yml wordpress.yaml

    cd /root/wordpress && docker-compose up -d         #建立啓動項目,到docker-compose.yaml所在目錄下執行

    cd /root/wordpress && docker-compose start            #啓動項目

    cd /root/wordpress && docker-compose stop            #關閉項目

    鏡像管理

    容器建立時須要指定鏡像,每一個鏡像都由惟一的標示 ImageID,和容器的 ContainerID同樣,默認128位,可使用前 16 爲縮略形式,也可使用鏡像名與版本號兩部分組合惟一標示,若是省略版本號,默認使用最新版本標籤(latesr)

    鏡像的分層:Docker 的鏡像經過聯合文件系統(union filesy stem)將各層文件系統疊加在一塊兒

    docker history 鏡像名         #查詢鏡像的分層

    docker history --no-trunc history     #顯示完整的歷史命令

    docker save 鏡像 ID > /home/xxx.tar #鏡像的導出

    docker load < /home/xx.tar                         #鏡像的導入,鏡像名和標籤會消失

    #恢復鏡像名,從新下載鏡像,相同層級不會下載

    docker save -o mysql5.7.tar imagename:tag        #鏡像的導出,老版本可用,新版本不必定

    docker load -i centos6-tools.tar                     #導入鏡像,老版本可用,新版本不必定

    1. dockerfilecommit

      Dockfile是一種被 Docker 程序解釋的腳本,Dockerfile 由一條一條的指令組成,每條指令對應 Linux 下面的一條命令。Docker 程序將這些Dockerfile 指令翻譯真正的 Linux 命令。Dockerfile 有本身書寫格式和支持的命令,Docker 程序解決這些命令間的依賴關係,相似於 Makefile 。Docker 程序將讀取 Dockerfile ,根據指令生成定製的 Image

      docker commit 容器ID 倉庫/鏡像名:版本            #容器轉爲鏡像,鏡像名自定義,須要小寫

           #commit封裝容器進程會關閉

      docker build -t 鏡像名:版本 dockerfile文件路徑        #用於啓動有dockerfile文件的鏡像

      FROM(指定基礎image)

      構建指令,必須指定且須要在Dockerfile其它指令的前面,後續指令都依賴於該指令指定的image,FROM指定的基礎image能夠是遠程官方倉庫,也能夠是本地倉庫

      example:

              FROM centos:7.2

              FROM centos

      MAINTAINER(用來指定鏡像建立者信息)

      構建命令,用於將image的製造者相關的信息寫入到image中,當咱們隊該image執行docker inspect命令是,輸出中有相應字段記錄該信息

      example

              MAINTAINER wangyang

      wangyang@itxdl.cn

      RUN(安裝軟件用)

      構建命令,RUN能夠容許任何被基礎image支持的命令,如基礎image選擇了centos,那麼軟件管理部分只能使用centos的包管理命令

      example

              RUN cd /tmp && curl -L 'http://archive.apache.org/dist/tomcat-7/v7.0.8/bin/apache-tomact-7.0.8.tar.gz' | tar xz

              RUN ["/bin/bash","-c","echo hello"]

      CMD(設置container啓動時執行的操做)

      設置命令,用於containe啓動時指定的操做,該操做能夠是執行自定義腳本,也能夠是系統命令,該指令只能在文件中存在一次,若是有多個,則執行最後一條

      example

              CMD echo "hello,world"

      ENTRYPOINT(設置container啓動時執行的操做)

      設置指令,指定容器啓動時執行的命令,能夠屢次設置,可是隻有最後一個有效

      example

              ENTRYPOINT ls -l

      #另外一種用法和CMD指令配合使用來指定ENTRYPOINT的默認參數,這時候CMD指令不是一個完整的可執行指令,僅僅只是參數部分,ENTRYPOINT指令只能使用JSON方式指定執行命令,而不能指定參數

      example

              FROM ubuntu

              CMD ["-l"]

              ENTRYPOINT ["/usr/bin/ls"]

      USER(設置容器的用戶)

      設置指令,設置啓動指令的用戶,默認用戶是root

      example

              USER daemon = ENTRYPOINT ["memcached","-u","daemon"]

      EXPOSE(指定容器須要映射到宿主機的端口,只是聲明端口)

      example

              docker rum -p host_port1:port -p host_prot2:port2 image

      ENV(用於設置環境變量)

      example

              ENV JAVA_home /path/to/java/dirent

      ADD(從src複製文件到容器的dest路徑,並解壓)

      example

              ADD <src> <dest>

                  <src>是相對唄構建的源目錄的相對路徑,能夠是文件,目錄,遠程URl

                  <dest>容器的絕對路徑

      COPY(從src複製文件到容器的dest路徑,只能文件)

      VOLUME(指定掛載點,作持久化目錄)

          設置指令,使容器中的一個目錄具備持久化存儲數據的功能,該目錄能夠被容器自己使用,也能夠共享給其餘容器使用。咱們知道容器使用的是AUFS,這種文件系統不能持久化數據,當容器關閉後,全部的更改都會丟失。當容器中的應用有持久化數據的需求時能夠在Dockerfile中使用該指令

      WORKDIR(切換目錄)

      example

              WORKDIR /p1 WORKDIR /p2 RUN vim a.txt\

      ONBUILD(在子鏡像中執行)

          ONBUILD 指定的命令在構建鏡像時並不執行,而是在它的子鏡像中執行

      example

              ONBUILD ADD . /app/src

              ONBUILD RUN /usr/local/bin/python-build --dir /app/src

    2. 倉庫的搭建

      倉庫是 Docker 程序中的三大要素之一,主要的功能存放 Image (環境)。

      官方地址:https://index.docker.io/docker

      私有倉庫構建 – 官方

      倉庫端:

      docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always registry

      #下載鏡像倉庫,registry爲官方的鏡像倉庫名

      vim /etc/docker/daemon.json        #新建文件,指定倉庫位置

              添加:

      {

           "insecure-registries": ["10.10.10.11:5000"]        #縮進四空格,填倉庫服務器IP

      }

              重啓docker服務

      客戶端:

      vim /etc/docker/daemon.json        #新建文件,指定倉庫位置

              添加:

      {

           "insecure-registries": ["10.10.10.11:5000"]        #縮進四空格,填倉庫服務器IP

      }

              重啓docker服務

              curl -XGET http://10.10.10.11:5000/v2/_catalog            #查看鏡像倉庫列表

              docker load -i 導入的鏡像名            #導入鏡像

              docker tag 鏡像名:版本號 新倉庫IP:端口/新鏡像名:版本號        #修改鏡像名和版本號

              docker push 新倉庫IP:端口/新鏡像名:版本號        #上傳鏡像到倉庫

              docker pull 新倉庫IP:端口/新鏡像名:版本號            #下載倉庫鏡像

      Harbor - 企業級 Docker 私有倉庫搭建

      企業級的鏡像倉庫,但須要注意 harbor 使用的是官方的 docker registry 服務去完成,至於 registry 是用本地存儲或者 s3 都是能夠的,harbor 的功能是在此之上提供用戶權限管理、鏡像複製等功能,提升使用的 registry 的效率

      安裝底層需求

      Python 應該是 2.7 或更高版本

      Docker 引擎應爲 1.10 或更高版本

      Docker Compose 須要爲 1.6.0 或更高版本

      Harbor官方下載地址: https://github.com/vmware/harbor/releases

      tar xf harbor-offline-installer-v1.2.0.tgz

      安裝步驟:

      vim /etc/docker/daemon.json

          修改:

      {

      "insecure-registries": ["serverip"]        #域名地址。若是是80,須要加上

      }

              vim harbor.cfg

                  修改:

      hostname                        #目標的主機名或者徹底限定域名

      ui_url_protocol             #http 或 http

      db_password                 #用於 db_auth 的 MySQL 數據庫的根密碼

      max_job_workers        #(默認值爲 3 )做業服務中的複製工做人員的最大數量

      customize_crt                #默認爲on當此屬性打開時, prepare 腳本將爲註冊表的令牌的生成 / 驗證創

      ssl_cert                        #SSL 證書的路徑,僅當協議設置爲 https 時才應用

      ssl_cert_key                 #SSL 密鑰的路徑,僅當協議設置爲 https 時才應用

      secretkey_path                #用於在複製策略中加密或解密遠程註冊表的密碼的密鑰路徑

              mkdir -p /data/cert/

              openssl genrsa -des3 -out server.key 2048

      openssl req -new -key server.key -out server.csr

      cp server.key server.key.org            #備份證書

      openssl rsa -in server.key.org -out server.key        #去除密碼設置

      openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

      ./install.sh        #到解壓目錄下運行腳本

      windows測試:客戶機修改hosts文件,域名訪問,最好在谷歌訪問

      鏈接:默認管理員用戶名 / 密碼爲 admin / Harbor12345

      linux測試:

      vim /etc/docker/daemon.json

                  修改:

      {

      "insecure-registries": ["serverip"]        #域名地址。若是是80,須要加上

      }

                      修改hosts文件

                      重啓docker服務

                      docker login serverip        #登入到鏡像倉庫

                      導入鏡像

                      docker tag hello-world 域名或IP/library/centos6.7:v1.0        #從新打標籤,須要安裝格式

                      docker push 域名或IP/library/centos6.7:v1.0        #上傳鏡像到倉庫

      docker pull 域名或IP/library/centos6.7:v1.0        #下載鏡像

    3. docker網絡管理

      容器訪問外部網絡

      iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -o docker0 -j MASQUERADE

      外部網絡訪問容器

      docker run -d -p 80:80 apache

      會建立以下規則:

      iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER

      iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.2:80

      網絡管理 – 進程

      -b, --bridge="" 指定 Docker 使用的網橋設備,默認狀況下 Docker 會自動建立和使用 docker0 網橋設備,經過此參數可使用已經存在的設備

      --bip 指定 Docker0 的 IP 和掩碼,使用標準的 CIDR 形式,如 10.10.10.10/24

      --dns 配置容器的 DNS,在啓動 Docker 進程是添加,全部容器所有生效

      網絡管理 – 容器

      --dns 用於指定啓動的容器的 DNS

      --net 用於指定容器的網絡通信方式,有如下四個值

      bridge:Docker 默認方式,網橋模式

      none:容器沒有網絡棧

      container:使用其它容器的網絡棧,Docker容器會加入其它容器的 network namespace

      host:表示容器使用 Host 的網絡,沒有本身獨立的網絡棧。容器能夠徹底訪問 Host 的網絡,不安全

      基礎命令說明

      docker network ls                 #查看當前可用的網絡類型

      docker network create -d網絡類型         #建立網絡空間名稱

              類型分爲:

                  overlay network

                  bridge network

      獨立至不一樣的網絡名字命名空間進行隔離

      docker network create -d bridge xdlcom        #名稱隨便取

      docker network create -d bridge xdlcn            #名稱隨便取

      docker network ls

              docker run -d --network= xdlcom --name test1 hub.c.163.com/public/centos:6.7-tools

      #以--network= xdlcom名稱的網絡模式啓動

              docker run -d --network= xdlcn --name test2 hub.c.163.com/public/centos:6.7-tools

              測試:進入容器相互訪問,ping不通,已隔離

      使用linux橋接器進行通訊

      cd /etc/sysconfig/network-scripts/

      cp ifcfg-eth0 ifcfg-br0        #br0是網橋bocker0的縮寫

      vi ifcfg-eth0

          添加:        #刪除原來全部內容,只保存一個UUID,至關於但網橋

      DEVICE=eth0

                  TYPE=Ethernet

                  ONBOOT=yes

                  BRIDGE=br0

                  NM_CONTROLLED=yes

                  BOOTPROTO=static

      vi ifcfg-br0

          修改:

      DEVICE=br0

                  TYPE=Bridge

                  ONBOOT=yes

                  BOOTPROTO=static

                  IPADDR=192.168.216.131                #本機IP

                  NETMASK=255.255.255.0

      #修改後重啓系統,不然可能會出現本地能通訊,外部不能通訊問題

      yum install -y git            #託管的工具

      git clone https://github.com/jpetazzo/pipework        #把遠程代碼同步到本地

      cp pipework/pipework /usr/local/bin/pipwork            #pipwork爲容器賦予真正能被外網訪問的地址

      chmod a+x /usr/local/bin/

      docker run -itd --net=none --name=ff -d 容器名        #網絡設爲none

      docker inspect 容器名            #查看容IP信息

      pipework br0 容器名 192.168.216.135/24         #須要分配的IP地址,臨時,須要寫開機自啓

      注:若是不成功,多重啓容器和網卡,正常bug

      Overlay 全覆蓋網絡(主要用於跨機器間的數據通信問題)

      Consul 是一個支持多數據中心分佈式高可用的服務發現和配置共享的服務軟件,由 HashiCorp 公司用 Go 語言開發, 基於 Mozilla Public License 2.0 的協議進行開源. Consul 支持健康檢查,並容許 HTTP 和 DNS 協議調用 API 存儲鍵值對

      hostnamectl set-hostname 主機名            #設置主機名,永久

      構建集羣環境:

      vim /etc/hosts

      添加:

      10.10.10.11 node1

      10.10.10.12 node2

      #主機之間可以使用主機名進行通信

              搭建時間同步服務

      node1:

              導入或下載consul_1.1.0_linux_amd64.zip

              unzip consul_1.1.0_linux_amd64.zip

              mv consul /usr/local/bin/

              chmod a+x /usr/local/bin/

              mkdir /opt/consul

              nohup consul agent -server -bootstrap -data-dir /opt/consul -bind=10.10.10.11 &

              #綁定當前IP地址,-server 聲明主服務器,-data-dir /opt/consul持久化目錄

              netstat -antp | grep 8500        #查看consul是否運行

              vim /lib/systemd/system/docker.service

                  修改:

      ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=consul://localhost:8500 --cluster-advertise=eth0:2375

      #檢查eth0:2375端口是否存活

              systemctl daemon-reload        #修改啓動文件,須要從新引導

              systemctl restart docker

          node2:

              unzip consul_1.1.0_linux_amd64.zip

              mv consul /usr/local/bin/

              chmod a+x /usr/local/bin/

              mkdir /opt/consul

              nohup consul agent -data-dir /opt/consul -bind=10.10.10.12 &

      #綁定當前IP地址,-data-dir /opt/consul持久化目錄

              vim /lib/systemd/system/docker.service

                  修改:

      ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=consul://localhost:8500 --cluster-advertise=eth0:2375

      #檢查eth0:2375端口是否存活

              systemctl daemon-reload

              systemctl restart docker

              consul join node1            #加入node1節點

              consul members                #查看consul的節點

              # consul支持高可用,能夠在設置一個主服務,相互競爭

          node1:

              docker network create -d overlay multihost        #建立全覆蓋網絡,multihost隨便取名

              docker network ls

      docker run --name test --network=multihost -d hub.c.163.com/public/centos:6.7-tools

      #以--network=multihost模式啓動容器

          node2:

              docker run --name test1 --network=multihost -d hub.c.163.com/public/centos:6.7-tools

      #不能與主服務器容器同名

          登陸至容器進行 Ping 測試

    4. 持久化數據

      前提:在 Docker 中,一個從鏡像啓動的容器一旦刪除後會刪除對應在物理機上的數據信息

      數據卷(data volume)

      mount -t overlay overlay -olowerdir=./low,upperdir=./upper,workdir=./work ./merged

      持久化實現命令

      #測試,掛載對應三個目錄,達到持久化目錄的效果

      docker run --name blog1 --volumes-from="blog" -d 鏡像名        #容器之間的共享數據

      docker run --name mysql -v /mysql:/var/lib/mysql -d 鏡像名

      #宿主和容器創建持久化目錄,/mysql:/var/lib/mysql先宿主機目錄,再容器目錄

      docker rm -f -v 容器名         #刪除持久化目錄和容器

      有的鏡像自帶持久化目錄,在Dockerfile中有添加volumes參數,生成的持久化目錄在/var/lib/docker/volumes/隨機字符串/_data

      存儲核心分類

      Docker 存儲驅動 (storage driver) 是 Docker 的核心組件,它是 Docker 實現分紅鏡像的基礎

      device mapper (DM):性能和穩定性存在問題,不推薦生產環境使用

      btrfs:社區實現了 btrfs driver,穩定性和性能存在問題

      overlayfs:內核 3.18 overlayfs 進入主線,性能和穩定性優異,第一選擇

      修改爲OverlayFS的默認文件系統

      echo "overlay" > /etc/modules-load.d/overlay.conf

      cat /proc/modules|grep overlay

      reboot

      vim /etc/systemd/system/docker.service

              --storage-driver=overlay \

  11. openstack

    雲計算

    美國國家標準與技術研究院(NIST)定義:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源可以被快速提供,只需投入不多的管理工做,或與服務供應商進行不多的交互

    雲計算前身網格計算底層虛擬化    分佈式計算,傳統虛擬化做爲底層

    如何抵禦ddos攻擊:

            針對少許IP攻擊,封IP

            少流量多IP攻擊,防火牆上設置超過鏈接數不能通訊

            外部應用程序防火牆

            引入公網流量清洗

    雲計算的分類(架構)

            公有云:公網用戶,帶寬大aws

                    資源按需供給

                    多租戶,自服務

            私有云:企業本身vmware

                    虛擬化自動擴展

                    簡化資源的管理和監控

            混合雲:openstack

                    計算要求高的,放入公司內部執行

                    用戶請求放入共網

    雲計算的分類(服務類型)

            IAAS:基礎設施即服務

            PAAS:平臺即服務

            SAAS:軟件即服務

    雲計算框架選擇

            API:應用程序編程接口,接口的普遍性

            使用何種開源協議進行編寫

            平臺成熟度

    API 對接 亞馬遜雲平臺

    使用 Apache 協議進行開源

    最火爆開源項目

    一個框架

    使用 Python 進行開發

    混合雲

    JUNO10版本的核心組件

    Nova:用於建立虛擬機

    Glance:提供鏡像和定義權限

    Swift:不須要考慮文件系統解決方案,直接存儲數據mount掛載

    Cinder:提供雲盤

    Neutron:給虛擬機提供網絡層次劃分,虛擬路由,不須要硬件路由

    Horizon:提供b/s操做界面

    Keystone:定義因此操做和服務的權限,提供通訊方案

    Heat:經過編寫yaml文件,批量建立虛擬機

    Ceilometer:監控流量

    Trove:提供連接數據庫的方案,默認集成

    Sahara:能夠與hadoop平臺結合的第三方插件

相關文章
相關標籤/搜索