操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    Prometheus簡介是一套開源的系統(tǒng)監(jiān)控報警框架。Prometheus作為新一代的云原生監(jiān)控系統(tǒng),相比傳統(tǒng)監(jiān)控監(jiān)控系統(tǒng)(Nagios或者Zabbix)擁有如下優(yōu)點(diǎn)

    易管理性:Prometheus核心部分只有一個單獨(dú)的二進(jìn)制文件,可直接在本地工作,不依賴于分布式存儲

    高效性:單一Prometheus可以處理數(shù)以百萬的監(jiān)控指標(biāo);每秒處理數(shù)十萬的數(shù)據(jù)點(diǎn)

    易于伸縮性:通過使用功能分區(qū)(sharing)+聯(lián)邦集群(federation)可以對Prometheus進(jìn)行擴(kuò)展,形成一個邏輯集群

    豐富的看板:多種可視化圖表及儀表盤支持

    針對容器監(jiān)控:對docker,k8S監(jiān)控有成熟解決方案

    Prometheus架構(gòu)圖

    Prometheus  Server:  收集指標(biāo)和存儲時間序列數(shù)據(jù),并提供查詢接口
    ClientLibrary:客戶端庫
    Push Gateway: 短期存儲指標(biāo)數(shù)據(jù)。主要用于臨時性的任務(wù)
    Exporters:采集已有的第三方服務(wù)監(jiān)控指標(biāo)并暴露metrics
    Alertmanager:告警
    Web  UI :簡單的web控制臺
    

    官方安裝說明

    https://prometheus.io/docs/prometheus/latest/installation/
    

    準(zhǔn)備兩臺服務(wù)器

    192.168.106.101   #Prometheus服務(wù)端
    192.168.106.100   #被監(jiān)控服務(wù)器
    

    101下載prometheus.yml主配置文件

    # my global config
    global:
      scrape_interval:     15s # 采集被監(jiān)控段指標(biāo)的一個周期
      evaluation_interval: 15s # 告警評估的一個周期
    
    # 告警的配置文件
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          # - alertmanager:9093
    
    # 告警規(guī)則配置
    rule_files:
      # - "first_rules.yml"
    #被監(jiān)控端的配置
    scrape_configs:
    
      - job_name: 'prometheus'
    
        static_configs:
        - targets: ['localhost:9090']
    
      - job_name: "docker"
        static_configs:
        - targets: ['192.168.31.62:8080']
    
      - job_name: "Linux"
        static_configs:
        - targets: ['192.168.31.62:9100']
    

    下載鏡像

    docker pull   prom/prometheus 
    

    開啟內(nèi)核路由轉(zhuǎn)發(fā)

    echo -e "net.ipv4.ip_forward = 1\nnet.ipv4.conf.default.rp_filter = 0 \nnet.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
    sysctl -p
    

    啟動鏡像,將主配置文件掛載到容器內(nèi)

    docker run -d  --name=prometheus   -p 9090:9090   -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml    prom/prometheus
    

    http://192.168.106.101:9090/ #訪問該地址,出現(xiàn)一個簡單ui界面,說明部署成功

    實(shí)戰(zhàn)一:監(jiān)控一個容器服務(wù)(常用的監(jiān)控指標(biāo)有: 內(nèi)存,CPU,硬盤,網(wǎng)絡(luò),狀態(tài))

    非交互獲取容器的監(jiān)控指標(biāo)

    `docker stats  --no-stream  lnmp_nginx `
    

    cAdvisor (Container Advisor) 用于收集正在允許的容器資源使用和性能信息。相當(dāng)于zabbix-agent一樣提供一個數(shù)據(jù)采集的接口

    docker部署cAdvisor:

    100被監(jiān)控服務(wù)器安裝

    docker run -d   \
    --volume=/:/rootfs:ro \
    --volume=/var/run:/var/run:ro  \
    --volume=/sys:/sys:ro  \
    --volume=/var/lib/docker/:/var/lib/docker:ro  \
    --volume=/dev/disk/:/dev/disk:ro \
    --publish=8080:8080 \
    --detach=true \
    --name=cadvisor \
    google/cadvisor:latest
    

    訪問該地址,就能看到實(shí)時采集到的數(shù)據(jù)

    http://192.168.106.100:8080/containers/  
    
    http://192.168.106.100:8080/metrics #該地址的數(shù)據(jù)為prometheus識別的數(shù)據(jù)的接口
    

    去101上修改prometheus的配置文件,復(fù)制一個job文件,job_name 指名稱,targets為cAdvisor服務(wù)器地址ip和端口

    vim    /tmp/prometheus.yml
    
    docker  restart  prometheus  #重啟服務(wù)
    

    http://192.168.106.101:9090/ 可以看到監(jiān)控指標(biāo)說明獲取數(shù)據(jù)成功

    101服務(wù)器上安裝grafana

     docker  run -d --name=grafana  -p 3000:3000  grafana/grafana
    

    http://192.168.106.101:3000/ #p配置數(shù)據(jù)源,配置完成點(diǎn)擊保存

    https://grafana.com/grafana/download    #該地址下載grafana模板
    

    保存,選擇Prometheus數(shù)據(jù)源后可以看到如下圖所示

    可以看到100上所有容器都被監(jiān)控到了,至此監(jiān)控容器完成!

    實(shí)戰(zhàn)二:監(jiān)控Linux主機(jī)

    編寫了一個采集linux主機(jī)metrics的腳本

     cat   node_exporter.sh
     #!/bin/bash
    
    wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
    
    tar zxf node_exporter-0.17.0.linux-amd64.tar.gz
    mv node_exporter-0.17.0.linux-amd64 /usr/local/node_exporter
    
    cat <<EOF >/usr/lib/systemd/system/node_exporter.service
    [Unit]
    Description=https://prometheus.io
    
    [Service]
    Restart=on-failure
    ExecStart=/usr/local/node_exporter/node_exporter
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    systemctl daemon-reload
    systemctl enable node_exporter
    systemctl restart node_exporter
    

    運(yùn)行這個腳本就能監(jiān)控Linux主機(jī)

    測試 訪問

    http://192.168.106.100:9100/metrics
    

    說明采集信息成功

    修改101服務(wù)上的配置文件/tmp/prometheus.yml

    docker restart prometheus
    

    檢測方法:http://192.168.106.101:9090/classic/targets,up說明采集成功

    然后配置grafana儀表盤,本次導(dǎo)入9276模板,和剛才導(dǎo)入模板的方式一致。導(dǎo)入完成即可看到如圖所示模板

    至此實(shí)戰(zhàn)監(jiān)控Linux部署完成

    容器技術(shù)是繼虛擬化技術(shù)之后,逐漸成為對云計算領(lǐng)域具有深遠(yuǎn)影響的變革技術(shù)。容器技術(shù)的發(fā)展和應(yīng)用,為各行業(yè)應(yīng)用云計算提供了新思路,也對云計算的交付方式、效率、PaaS 平臺的構(gòu)建等方面產(chǎn)生深遠(yuǎn)的影響,具體體現(xiàn)在以下幾個方面:簡化部署、快速啟動、服務(wù)組合、易于遷移。虛擬化是云計算的重要基礎(chǔ),容器定義了一套從構(gòu)建到執(zhí)行的標(biāo)準(zhǔn)化體系,改變了傳統(tǒng)的虛擬化技術(shù),深度影響云計算領(lǐng)域,容器是云計算的未來

    虛擬化技術(shù)背景

    虛擬化技術(shù)被用于系統(tǒng)資源管理、容錯、軟硬件保護(hù)、增強(qiáng)系統(tǒng)安全、提升性能和節(jié)能等領(lǐng)域;虛擬化技術(shù)廣泛地與其他技術(shù)結(jié)合,并且得到更多硬件支持,其性能損失不斷降低,部分固化到硬件中

    虛擬化技術(shù)的含義:將任何一種形式的資源抽象成另一種形式的技術(shù)都是虛擬化。例如虛擬內(nèi)存空間和進(jìn)程,如果把內(nèi)存看作一個設(shè)備,虛擬內(nèi)存就是將物理內(nèi)存虛擬成多個內(nèi)存空間,如果把內(nèi)存看作一個設(shè)備,虛擬內(nèi)存就是將物理內(nèi)存虛擬成多個內(nèi)存空間;進(jìn)程的概念實(shí)際是對于物理硬件執(zhí)行環(huán)境的一個抽象,每一個進(jìn)程都享有一個完整的硬件執(zhí)行環(huán)境,并且與其他進(jìn)程相隔離;相對于進(jìn)程級的虛擬化,虛擬機(jī)是另一個層面的虛擬化,即系統(tǒng)虛擬化。系統(tǒng)級虛擬化所抽象的環(huán)境是整個計算機(jī),其抽象出的環(huán)境成為虛擬機(jī),包括CPU、內(nèi)存和I/O。在每個虛擬機(jī)中都可以運(yùn)行一個操作系統(tǒng),在一臺計算機(jī)上可以虛擬出多個虛擬機(jī)

    目前已經(jīng)有網(wǎng)絡(luò)虛擬化、微處理器虛擬化、文件虛擬化和存儲虛擬化等技術(shù)。抽象來說,虛擬化是資源的邏輯表示,它不受物理限制的約束;具體來說,虛擬化技術(shù)的實(shí)現(xiàn)形式是在系統(tǒng)中加入一個虛擬化層,虛擬化層將下層的資源抽象成另一種形式的資源,提供給上層使用。通過空間上的分割、時間上的分時以及模擬,虛擬化可以將一份資源抽象成多份。反過來,虛擬化也可以將多份資源抽象成一份。虛擬化可以將紛繁復(fù)雜的物理世界改造成一個可以實(shí)現(xiàn)定制需求的世界

    系統(tǒng)虛擬化是虛擬化技術(shù)中的一種,其抽象的粒度是整個計算機(jī);硬件與操作系統(tǒng)之間的是硬件抽象層,在操作系統(tǒng)與應(yīng)用程序或函數(shù)庫之間的是API抽象層。硬件抽象層(Hardware Abstraction Layer, HAL)是計算機(jī)中軟件所能控制的硬件的抽象接口,通常包括CPU的各種寄存器、內(nèi)存管理模塊、I/O端口和內(nèi)存映射的I/O地址等;API抽象層是一個進(jìn)程所能控制的系統(tǒng)功能的集合,包括創(chuàng)建新進(jìn)程、內(nèi)存申請和歸還、進(jìn)程間同步與共享、文件系統(tǒng)和網(wǎng)絡(luò)操作等;本質(zhì)上,虛擬化就是由位于下層的軟件模塊,通過向上一層軟件模塊提供一個與它原先所期待的運(yùn)行環(huán)境完全一致的接口的方法,抽象出一個虛擬的軟件或硬件接口,使得上層軟件可以直接運(yùn)行在虛擬環(huán)境上。虛擬化可以發(fā)生在現(xiàn)代計算機(jī)系統(tǒng)的各個層次上,不同層次的虛擬化會帶來不同的虛擬化概念

    物理資源通常有一個定語成為宿主(Host),而虛擬出來的資源通常有一個定語稱為客戶(Guest)。例如講一個物理計算機(jī)虛擬為一個或多個虛擬計算機(jī),則這個物理計算機(jī)通常也被稱為宿主機(jī)(Host Machine),而其上運(yùn)行的虛擬計算機(jī)被稱為客戶機(jī)(Guest Machine);宿主機(jī)上運(yùn)行的操作系統(tǒng)被稱為宿主機(jī)操作系統(tǒng)(Host OS),而虛擬機(jī)中運(yùn)行的操作系統(tǒng)被稱為客戶機(jī)操作系統(tǒng)(Guest OS)

    系統(tǒng)虛擬化 指將一臺物理計算機(jī)系統(tǒng)虛擬化為一臺或多臺虛擬計算機(jī)系統(tǒng),每個虛擬計算機(jī)系統(tǒng)(簡稱為虛擬機(jī))都擁有自己的虛擬硬件(如CPU、內(nèi)存和設(shè)備等),來提供一個獨(dú)立的虛擬機(jī)執(zhí)行環(huán)境。通過虛擬化層的模擬,虛擬機(jī)中的操作系統(tǒng)認(rèn)為自己仍然是獨(dú)占一個系統(tǒng)在運(yùn)行。每個虛擬機(jī)中的操作系統(tǒng)可以完全不同,并且它們的執(zhí)行環(huán)境是完全獨(dú)立的,這個虛擬化層被稱為虛擬機(jī)監(jiān)控器(Virtual Machine Monitor,VMM)。VM和物理機(jī)系統(tǒng)可以是兩個完全不同的ISA系統(tǒng),不同的ISA使得虛擬機(jī)的每一條指令可以在處理器上直接運(yùn)行,只有那些需要虛擬化的指令才會由VMM進(jìn)行處理

    虛擬機(jī)可以看作是物理機(jī)的一種高效隔離的復(fù)制,有幾個特點(diǎn)

    • 同質(zhì) 指虛擬機(jī)的運(yùn)行環(huán)境和物理機(jī)的環(huán)境在本質(zhì)上需要是相同的,但在表現(xiàn)上能夠有一些差異;例如,虛擬機(jī)所看到的處理器個數(shù)可以和物理機(jī)上實(shí)際的處理器個數(shù)不同,處理器主頻也可以與物理機(jī)的不同
    • 高效 虛擬機(jī)中運(yùn)行的軟件需要由接近在物理機(jī)上直接運(yùn)行的性能--大多數(shù)指令直接在硬件上運(yùn)行,少量指令需要經(jīng)過VMM處理器或模擬
    • 資源受控 VMM需要對系統(tǒng)資源由完全控制能力和管理權(quán)限,包括資源的分配、監(jiān)控和回收

    類虛擬化技術(shù)(Para-Virtualization)主要思想是通過客戶機(jī)操作系統(tǒng)與虛擬化管理層的協(xié)同設(shè)計,由虛擬化管理層軟件提供一個近似于原物理系統(tǒng),但又不完全相同(與原系統(tǒng))的虛擬平臺

    系統(tǒng)虛擬化提供了多個隔離的執(zhí)行環(huán)境,具有如下功能功能

    • 封裝性 以虛擬機(jī)為粒度的封裝使得虛擬機(jī)運(yùn)行環(huán)境保存非常便捷,虛擬機(jī)的優(yōu)秀封裝性使得以下應(yīng)用模式可以方便地實(shí)現(xiàn)
    • 虛擬機(jī)快照
    • 虛擬機(jī)克隆 從虛擬機(jī)的執(zhí)行環(huán)境復(fù)制出一個或多個相同的虛擬機(jī)
    • 虛擬機(jī)掛起 暫停一個運(yùn)行中的虛擬機(jī),將其運(yùn)行環(huán)境保存在磁盤上
    • 虛擬機(jī)恢復(fù) 將保存在磁盤上的虛擬機(jī)運(yùn)行環(huán)境恢復(fù)到內(nèi)存中繼續(xù)運(yùn)行的操作
    • 多實(shí)例 在一個計算機(jī)上運(yùn)行多個虛擬機(jī)使得資源的調(diào)度更為優(yōu)化
    • 隔離 使用虛擬機(jī),每個應(yīng)用程序可以在自己的操作系統(tǒng)環(huán)境中獨(dú)立地運(yùn)行,而不會影響到其他的工作負(fù)載
    • 硬件無關(guān)性 虛擬化是資源的邏輯表示,它不受物理限制的約束。由于虛擬化層的抽象,虛擬機(jī)與底層的硬件沒有直接的綁定關(guān)系
    • 特權(quán)功能 由于虛擬化層處于客戶機(jī)及客戶機(jī)操作系統(tǒng)的下層,其具有更高的特權(quán)屬性。在這個層中添加新的功能有如下兩個優(yōu)勢
    • 新的功能有高級特權(quán)級,不能被客戶機(jī)操作系統(tǒng)繞過
    • 新的功能不需要了解客戶機(jī)內(nèi)部的語義,使其實(shí)現(xiàn)上更容易

    云計算的一個核心思想是在服務(wù)器端提供集中的計算資源,同時這些計算資源要獨(dú)立地服務(wù)于不同的用戶,也就是在共享的同時,為每個用戶提供隔離、安全、可信的工作環(huán)境。虛擬化技術(shù)將是云計算的一個基礎(chǔ)架構(gòu),即云計算實(shí)際上是一個虛擬化的計算資源池,用來容納各種不同的工作模式,這些模式可以快速部署到物理設(shè)施上。虛擬化的資源按照來自用戶的需求多少動態(tài)調(diào)動資源,每個用戶都有一個獨(dú)立的計算執(zhí)行環(huán)境,虛擬化為云計算的發(fā)展提供一個自適應(yīng)、自管理的靈活基礎(chǔ)架構(gòu)

    VMM分類

    • 按虛擬平臺分類
    • 完全虛擬化 VMM虛擬的是現(xiàn)實(shí)存在的平臺,并且客戶機(jī)操作系統(tǒng)看來,虛擬的平臺和實(shí)現(xiàn)的平臺是一樣的,客戶機(jī)操作系統(tǒng)察覺不到是運(yùn)行在一個虛擬平臺上
    • 類虛擬化 VMM虛擬的平臺是現(xiàn)實(shí)中不存在的,而是經(jīng)過VMM重新定義的,這樣的虛擬平臺需要對所運(yùn)行的客戶機(jī)操作系統(tǒng)進(jìn)行或多或少的修改使之適應(yīng)虛擬環(huán)境,因此客戶機(jī)操作系統(tǒng)周到其運(yùn)行在虛擬平臺上,并且會主動適應(yīng)
    • 按VMM實(shí)現(xiàn)結(jié)構(gòu)分類
    • Hypervisor模型 在Hypervisor模型中,VMM首先可以被看做是一個完備的操作系統(tǒng),不過和傳統(tǒng)操作系統(tǒng)不同的是,VMM是為虛擬化而設(shè)計的,因此還具備虛擬化功能。從架構(gòu)上來看,首先,所有的物理資源如處理器、內(nèi)存和I/O設(shè)備等都?xì)wVMM所有,因此,VMM承擔(dān)著管理物理資源的責(zé)任;其次,VMM需要向上提供虛擬機(jī)用于運(yùn)行客戶機(jī)操作系統(tǒng),因此,VMM還負(fù)載虛擬環(huán)境的創(chuàng)建和管理

    • 處理器管理代碼(Processor, P)負(fù)責(zé)物理處理器的管理和虛擬化
    • 內(nèi)存管理代碼(Memory, M)負(fù)責(zé)物理內(nèi)存的管理和虛擬化
    • 設(shè)備模型(Device Model, DM)負(fù)責(zé)I/O設(shè)備的虛擬化
    • 設(shè)備驅(qū)動(Device Driver, DR)則負(fù)責(zé)I/O設(shè)備的驅(qū)動,及物理設(shè)備的管理

    VMM直接管理所有的物理資源,包括處理器、內(nèi)存和I/O設(shè)備,因此,設(shè)備驅(qū)動是VMM的一部分;處理器管理代碼、內(nèi)存管理代碼和設(shè)備模型也是VMM的一部分

    在Hypervisor模型中,由于VMM同時具備物理資源的管理功能和虛擬化功能,因此,物理資源虛擬化的效率會更高一些;在安全方面,虛擬機(jī)的安全只依賴于VMM的安全

    • 宿主模型 在宿主模型中,物理資源由宿主機(jī)操作系統(tǒng)管理。宿主機(jī)操作系統(tǒng)是傳統(tǒng)操作系統(tǒng)(Window、Linux等),這些操作系統(tǒng)并不是為虛擬化而設(shè)計的,因此本身并不具備虛擬化功能,實(shí)際的虛擬化功能由VMM來提供。VMM通常是宿主機(jī)操作系統(tǒng)獨(dú)立的內(nèi)核模塊,有些實(shí)現(xiàn)中還包括用戶態(tài)進(jìn)程,如負(fù)責(zé)I/O虛擬化的用戶態(tài)設(shè)備模型;VMM通過調(diào)用宿主機(jī)操作系統(tǒng)的服務(wù)來獲得資源,實(shí)現(xiàn)處理器、內(nèi)存和I/O設(shè)備的虛擬化;VMM創(chuàng)建出虛擬機(jī)后,通常將虛擬機(jī)作為宿主機(jī)操作系統(tǒng)的一個進(jìn)程參與調(diào)度

    優(yōu)缺點(diǎn)與Hypervisor模型相反;宿主模型最大的優(yōu)點(diǎn)是可以充分利用現(xiàn)有操作系統(tǒng)的設(shè)備驅(qū)動程序,VMM無須為各類I/O設(shè)備重新實(shí)現(xiàn)驅(qū)動程序,可以專注于物理資源的虛擬化;缺點(diǎn)是,由于物理資源由宿主機(jī)操作系統(tǒng)控制,VMM需要調(diào)用宿主機(jī)操作系統(tǒng)的服務(wù)來獲取資源進(jìn)行虛擬化,而那些系統(tǒng)服務(wù)在設(shè)計開發(fā)之初并沒有考慮虛擬化的支持,因此,VMM虛擬化的效率和功能會收到一定影響。VMM在安全性方面依賴于宿主機(jī)操作系統(tǒng)內(nèi)核安全性

    • 混合模型 上述兩種方式的混合體,VMM依然位于最底層,用于所有的物理資源,與Hypervisor模式不同的是,VMM會主動讓出大部分I/O設(shè)備的控制權(quán),將它們交由一個運(yùn)行在特權(quán)虛擬機(jī)中的特權(quán)操作系統(tǒng)來控制。VMM虛擬化的職責(zé)也被分擔(dān),處理器和內(nèi)存的虛擬化依然由VMM來完成,而I/O的虛擬化則由VMM和特權(quán)操作系統(tǒng)共同合作來完成

    混合模型VMM集中上述兩種模式的優(yōu)點(diǎn),可以利用現(xiàn)有操作系統(tǒng)的I/O設(shè)備驅(qū)動程序,不需要另外開發(fā);VMM直接控制處理器、內(nèi)存等物理資源,虛擬化的效率也較高;在安全性方面,如果對特權(quán)操作系統(tǒng)的權(quán)限控制得當(dāng),虛擬機(jī)的安全性只依賴于VMM

    典型虛擬化產(chǎn)品 VMware、Microsoft、Xen、KVM

    虛擬環(huán)境性能

    • 性能評價指標(biāo)和優(yōu)化
    • 吞吐量 單位時間內(nèi)系統(tǒng)的處理能力
    • 延遲 指完成一個指定任務(wù)所需要花費(fèi)的時間
    • 資源利用率 指完成一個任務(wù)所需要花費(fèi)的系統(tǒng)資源

    一般情況下吞吐量越高、延遲越少、資源利用率越低則表示系統(tǒng)的性能越好,反之則越差。通常三項(xiàng)指標(biāo)不會同時都朝性能好的方向發(fā)展,因此,需要統(tǒng)籌分析考慮,綜合評價性能的好壞。為了綜合評價一個虛擬環(huán)境的性能,就要有不同的工具從不同的角度考量它各方面的性能

    • 性能評測工具
    • 重用操作系統(tǒng)的性能評測工具 sysbench、cyclesoak、hdparm、netperf
    • 面向虛擬環(huán)境的性能評測工具 vConsolidate、VMmark
    • 性能分析工具 Xenoprof、Xentrace、Xentop
    • 性能優(yōu)化方法
    • 降低客戶機(jī)退出事件發(fā)生頻率,提高虛擬化的效率
    • 硬件加速
    • 硬件加速
    • 影子頁表
    • 直接分配I/O
    • Hypercall
    • 降低客戶機(jī)退出事件處理時間
    • 降低處理器利用率

    容器技術(shù)的基本概念和發(fā)展背景

    容器技術(shù)主要涉及兩個方面

    資源容器 主要是為了提高應(yīng)用程序?qū)ο到y(tǒng)資源的控制和管理能力,基于資源容器的系統(tǒng)可以把系統(tǒng)中的資源主體從運(yùn)行主體(即進(jìn)程)中剝離出來,從而達(dá)到對系統(tǒng)資源進(jìn)行更精確和高效控制的目的

    基于容器的虛擬化技術(shù)通過借鑒容器的核心思想,將系統(tǒng)中的資源主體從運(yùn)行主體(虛擬機(jī))中剝離出來,從而達(dá)到在虛擬化技術(shù)上對系統(tǒng)資源進(jìn)行精確和高效控制的目的。虛擬機(jī)監(jiān)控器負(fù)責(zé)對系統(tǒng)中所有的資源容器進(jìn)行管理和控制,根據(jù)用戶配置以及系統(tǒng)資源使用的實(shí)際情況進(jìn)行合理分配和回收,實(shí)現(xiàn)跨虛擬機(jī)的進(jìn)程間資源共享,但這樣的資源控制機(jī)制仍然存在安全隱患。克服資源共享帶來的安全隱患的有效方法,是采用一套可靠的訪問控制機(jī)制來防止非法的資源共享。強(qiáng)制訪問控制通過在所有的系統(tǒng)對象上添加有管理員制定的安全策略來限制正在執(zhí)行的程序的訪問權(quán)限,從而阻止惡意程序破壞的傳播。該方法存在許多限制,無法針對單個程序提出不同的安全策略,其次它對數(shù)據(jù)和程序的完整性,以及程序的職能范圍無法進(jìn)行有效的控制;在次基礎(chǔ)上,研究者提出名為Flask的MAC架構(gòu),實(shí)現(xiàn)將安全策略邏輯與安全機(jī)制的分離,從而能夠提供更加便捷的安全策略設(shè)置和調(diào)整,以滿足不同程序?qū)Π踩呗缘囊蟆ELinux是MAC機(jī)制在Linux操作系統(tǒng)上的實(shí)現(xiàn),它涵蓋了對進(jìn)程、文件和套接字在內(nèi)的多種系統(tǒng)資源的訪問控制。通過引入域、角色和類型等概念實(shí)現(xiàn)對安全策略的細(xì)化和精確定制。虛擬化技術(shù)因其卓越的進(jìn)程和系統(tǒng)資源隔離能力在發(fā)展的初期就被用來實(shí)現(xiàn)對應(yīng)用程序的訪問控制;將應(yīng)用程序置于相對獨(dú)立的運(yùn)行環(huán)境中,由虛擬機(jī)監(jiān)控器依照管理員制定的策略實(shí)現(xiàn)程序間的訪問控制

    安全容器 核心思想在于將訪問控制機(jī)制從操作系統(tǒng)中剝離出來獨(dú)立于運(yùn)行環(huán)境,依據(jù)不同的安全策略形成虛擬的安全容器。在資源容器的基礎(chǔ)上,對包括姿態(tài)進(jìn)程、文件系統(tǒng)、網(wǎng)絡(luò)和進(jìn)程間通信等在內(nèi)的系統(tǒng)資源進(jìn)行訪問控制

    基于容器的虛擬化技術(shù)借鑒了安全容器的思想,在使用資源容器實(shí)現(xiàn)資源共享的基礎(chǔ)上通過安全容器技術(shù)實(shí)現(xiàn)對共享資源的有效訪問控制。按照不同的安全對象,諸如域、應(yīng)用程序和虛擬機(jī)風(fēng)分配不同的可訪問資源形成虛擬的安全容器,防止其他對象對其資源進(jìn)行惡意的、未授權(quán)的訪問

    容器發(fā)展歷程

    • OS虛擬化思想起源于1979年,UNIX系統(tǒng)中的chroot(為了方便切換root目錄),為每個進(jìn)程提供了文件系統(tǒng)資源的隔離,這也是容器技術(shù)XXX
    • BSD于2000年吸收并改進(jìn)chroot技術(shù),發(fā)布的FreeBSD Jails除文件系統(tǒng)隔離,還添加了用戶和網(wǎng)絡(luò)資源等的隔離,每個Jail還能分配一個獨(dú)立IP,進(jìn)行一些相對獨(dú)立的軟件安裝和配置
    • 2001年,Linux發(fā)布的Linux Vserver依舊是延續(xù)Jails的思想,在一個操作系統(tǒng)上隔離文件系統(tǒng)、CPU時間、網(wǎng)絡(luò)地址和內(nèi)存等資源,每一個分區(qū)都被稱為一個security context,內(nèi)部虛擬化系統(tǒng)被稱為VPS
    • 2004年,原SUN公司發(fā)布的Solaris Containers作為Solaris 10中的特性,包含了系統(tǒng)資源控制和zones提供的二進(jìn)制隔離,Zones作為操作系統(tǒng)實(shí)例內(nèi)一個完全隔離的虛擬服務(wù)器存在
    • 2005年,SWsoft公司發(fā)布OpenVZ,它和Solaris Containers非常相似,通過打補(bǔ)丁的Linux內(nèi)核來提供虛擬化、隔離、資源管理和檢查點(diǎn)。OpenVZ標(biāo)志著內(nèi)核級別的虛擬化真正成為主流,之后不斷有相關(guān)的技術(shù)被加入內(nèi)核
    • 2006年,Google發(fā)布Process Containers記錄和隔離每個進(jìn)程的資源使用(包括CPU、內(nèi)存、硬盤I/O、網(wǎng)絡(luò)等),后改名為cgroups(Control Groups),并于2007年被加入V2.6.24 Linux內(nèi)核中
    • 2008年,出現(xiàn)第一個比較完善的LXC容器技術(shù),基于已被加入內(nèi)核的cgroups和Linux namespaces實(shí)現(xiàn),不需要打補(bǔ)丁,LXC就能運(yùn)行在任意vanila內(nèi)核的Linux上
    • 2011年,CloudFoundry發(fā)布Warden,與LXC不同,Warden可以工作在任何操作系統(tǒng)上,作為守護(hù)進(jìn)程運(yùn)行,還提供了管理容器的API
    • 2013年Google公司建立開源容器技術(shù)棧lmctfy,Google開啟這個項(xiàng)目是為了通過容器實(shí)現(xiàn)高性能,高資源利用率,同時接近零開銷的虛擬化技術(shù)。目前Kubernetes中的監(jiān)控工具cAdvisor就起源于lmctfy項(xiàng)目;2015年,Google將lmctfy的核心技術(shù)貢獻(xiàn)給libcontainer
    • 2013年Docker誕生,Docker最早是dotCloud內(nèi)部的項(xiàng)目,和Warden類似,Docker最初也用了LXC,后來開發(fā)libcontainer替換LXC;與其他容器技術(shù)不同的是,Docker圍繞容器構(gòu)建了一套完整的生態(tài),包括容器鏡像標(biāo)準(zhǔn)、容器Registry、REST API、CLI、容器集群管理工具Docker Swarm等
    • 2014年CoreOS為改進(jìn)Docker在安全方面的缺陷,重寫容器引擎創(chuàng)建了rkt,相關(guān)容器工具產(chǎn)品包括:服務(wù)發(fā)現(xiàn)工具etcd和網(wǎng)絡(luò)工具flannel
    • 2016年微軟公司發(fā)布基于Windows的容器技術(shù)Hyper-V Container,其原理和Linux下的容器技術(shù)類似,可以保證在某個容器里運(yùn)行的進(jìn)程與外界是隔離的,兼顧虛擬機(jī)的安全性和容器的輕量級

    容器技術(shù)框架

    通過研究、梳理和分析現(xiàn)有的容器技術(shù),形成容器相關(guān)的技術(shù)架構(gòu)

    • 服務(wù)器層 當(dāng)運(yùn)行容器鏡像時,容器本身需要運(yùn)行在傳統(tǒng)操作系統(tǒng)(物理機(jī)或VM)之上,容器并不關(guān)心服務(wù)層如何提供和管理,它期望的是能夠獲得這些服務(wù)器資源
    • 資源管理層 包含服務(wù)器、操作系統(tǒng)等資源的管理。其中如果是物理服務(wù)器,需要涉及物理機(jī)管理系統(tǒng)(Rocks等);如果是虛擬機(jī),需要使用虛擬化平臺。無論是哪一種形態(tài)的服務(wù)器都需要對其中的OS加一管理(Chef、Puppet、Ansible和SaltStack等工具);傳統(tǒng)的存儲和網(wǎng)絡(luò)管理也包含在資源管理層。資源管理層的核心目標(biāo)是對服務(wù)器和操作系統(tǒng)資源進(jìn)行管理,以支持上層的容器運(yùn)行引擎
    • 運(yùn)行引擎層 主要指常見容器系統(tǒng),如Docker、rkt、Hyper、CRI-O;這些容器系統(tǒng)的共通作用包括啟動容器鏡像、運(yùn)行容器應(yīng)用和管理容器實(shí)例。運(yùn)行引擎又可以分為管理程序和運(yùn)行時兩個模塊,是單機(jī)程序(類似于虛擬化軟件KVM和Xen),引擎運(yùn)行于服務(wù)器操作系統(tǒng)之上,接受上層集群系統(tǒng)的管理
    • 相關(guān)開源項(xiàng)目
    • 資源隔離 Cgroup、Hypervisor
    • 訪問限制 Namespace、Hypervisor
    • 管理程序 Docker Engine、OCID、hyperd、rkt、CRI-O
    • 運(yùn)行時環(huán)境 runC(Docker)、runV(Hyper)、runZ(Solaris)
    • 集群管理層 可以把容器的集群管理系統(tǒng)類和針對VM的集群管理系統(tǒng)劃等號,都是通過對一組服務(wù)器運(yùn)行分布式應(yīng)用;區(qū)別在于,VM的集群管理系統(tǒng)需要運(yùn)行在物理服務(wù)器上,容器集群管理系統(tǒng)可以運(yùn)行在物理服務(wù)器和VM上
    • 容器集群管理系統(tǒng)包括 Kubernetes、Docker Swarm、Mesos

    集群管理層涉及到的相關(guān)開源項(xiàng)目包括

    • 指揮調(diào)度 Docker Swarm、Kubernetes、Mesos
    • 服務(wù)發(fā)現(xiàn) Etcd、Consul、Zookeeper、DNS
    • 監(jiān)控 Prometheus
    • 存儲 Flocker
    • 網(wǎng)絡(luò) Calico、Weave、Flannel
    • 應(yīng)用層 指所有運(yùn)行于容器之上的應(yīng)用程序,以及所需輔助的系統(tǒng),包括:監(jiān)控、日志、安全、編排、鏡像倉庫等
    • 監(jiān)控模塊 Prometheus、cAdvisor、Sysdis等
    • 日志 Fluentd、LogStash
    • 安全 容器鏡像的安全掃描、運(yùn)行環(huán)境的安全隔離、集群環(huán)境的安全管理
    • 編排 Docker Compose、CoreOS Fleet
    • CI/CD Jenkins、Buildbot、Gitlab CI、Drone.io
    • 鏡像倉庫 Docker Hub、VMware Harbor、Huawei Dockyard

    云計算架構(gòu)圖

    容器技術(shù)的關(guān)鍵技術(shù)內(nèi)容

    • 鏡像 容器鏡像包括操作系統(tǒng)文件、應(yīng)用本身的文件、應(yīng)用所依賴的軟件包和庫文件
    • 運(yùn)行時引擎
    • 容器編排 容器啟動、容器的應(yīng)用部署、容器的應(yīng)用部署
    • 容器集群 將多臺物理機(jī)抽象為邏輯上單一調(diào)度實(shí)體的技術(shù),為容器化的應(yīng)用提供資源調(diào)度、服務(wù)發(fā)現(xiàn)、彈性伸縮、負(fù)責(zé)均衡等功能,同時監(jiān)控和管理整個服務(wù)器集群,提供高質(zhì)量、不間斷的應(yīng)用服務(wù)。容器集群主要包含以下技術(shù)
    • 資源調(diào)度 以集中化方式管理和調(diào)度資源,按需為容器提供CPU、內(nèi)存等資源
    • 服務(wù)發(fā)現(xiàn) 通過全局可訪問的注冊中心實(shí)現(xiàn)任何一個應(yīng)用能夠獲取當(dāng)前環(huán)境的細(xì)節(jié),自動加入到當(dāng)前的應(yīng)用集群中
    • 彈性伸縮 在資源層面,監(jiān)控集群資源使用情況,自動增減主機(jī)資源;在應(yīng)用層面,可通過策略自動增減用于實(shí)例來實(shí)現(xiàn)業(yè)務(wù)能力的彈性伸縮
    • 負(fù)載均衡 當(dāng)應(yīng)用壓力增加,集群自動擴(kuò)展服務(wù)將負(fù)載均衡至每一個運(yùn)行節(jié)點(diǎn);當(dāng)某個節(jié)點(diǎn)出現(xiàn)故障,應(yīng)用實(shí)例重新部署運(yùn)行到健康的節(jié)點(diǎn)
    • 服務(wù)注冊和發(fā)現(xiàn) 容器技術(shù)在構(gòu)建自動化運(yùn)維場景中,服務(wù)注冊和發(fā)現(xiàn)是兩個重要的環(huán)節(jié),一般通過一個全局性的配置服務(wù)來實(shí)現(xiàn)
    • 熱遷移 動態(tài)遷移或?qū)嵤┻w移,是指將整個容器的運(yùn)行時狀態(tài)完整保存下來,同時可以快速地在其他主機(jī)或平臺上恢復(fù)運(yùn)行。主要應(yīng)用在兩個方面
    • 有多個操作單元執(zhí)行任務(wù),熱遷移能迅速地復(fù)制與遷移容器,做到無感知運(yùn)行作業(yè)
    • 可以處理數(shù)據(jù)中心中集群的負(fù)載均衡,大量數(shù)據(jù)涌來無法運(yùn)行計算時,可利用熱遷移創(chuàng)建多個容器處理運(yùn)算任務(wù),調(diào)節(jié)信息數(shù)據(jù)處理峰谷,配置管理負(fù)載均衡比例,降低應(yīng)用延遲

    小結(jié)

    文章對虛擬化技術(shù)及容器技術(shù)的發(fā)展演進(jìn)做了簡單介紹,作為本系列課程的序。后期更多精彩內(nèi)容分享,歡迎持續(xù)關(guān)注

    參考文獻(xiàn)

    [1] 《系統(tǒng)虛擬化 原理與實(shí)現(xiàn)》

    [2] 《容器技術(shù)及其應(yīng)用白皮書 V1.0》

    容器技術(shù)專欄主題預(yù)告

    1.OCI容器技術(shù)規(guī)范

    2.容器鏡像規(guī)范

    3.容器運(yùn)行時規(guī)范

    4.鏡像倉庫規(guī)范

    5.Docker

    更多精彩內(nèi)容,歡迎關(guān)注微信公眾號`云時代的運(yùn)維開發(fā)`

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有