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

新聞資訊

    1. DNS介紹

    1.1什么是域名

    域名(Domain Name) ,簡稱域名、網域,是由一串用點分隔的名字組成的Intemet上某一臺計算機或計算機組的名稱,用于在數據傳輸時標識計算機的電子方位。具有獨一無二,不可重復的特性。

    1.2 什么是DNS?

    域名系統(Domain Name System,縮寫: DNS)是互聯網的一項服務。域名解析是把域名指向網站空間IP,讓人們通過注冊的域名可以方便地訪問到網站的一種服務。IP地址是網絡上標識站點的數字地址,為了方便記憶,采用域名來代替IP地址標識站點地址。域名解析就是域名到IP地址的轉換過程。域名的解析工作由DNS服務器完成。可以理解為DNS就是翻譯官。

    正向解析: 域名 --> IP地址

    反向解析: IP地址 --> 域名 //郵件服務會用到。

    1.3 域名的組成和分類

    常見格式: www.baidu.com

    完整格式: www.baidu.com.

    . : 根域 ,可省略不寫 ,全球13臺 ,一臺主根 ,其他都是輔根

    com : 頂級域, 由ICANN 組織指定和管理。

    分類:

    國家地區域名: cn (中國) 、hk (香港) 、sg (新加坡)等

    通用頂級域名: com (商業機構) I org (非營利組織) 、edu (教育機構)等。

    新通用頂級域名: red (紅色、熱情) 、top (頂級、高端)等

    baidu:二級域(注冊域) ,可由個人或組織申請注冊。

    www: 三級域(子域) ,服務器網站名代表。

    主機名: s1.www.atguigu.com.中的s1就是主機名,一般用來表示具體某一臺主機。 //不常見

    2. 域名解析過程

    1. 客戶機首先查看查找本地hosts文件,如果有則返回,否則進行下一步

    2. 客戶機查看本地緩存,是否存在本條目的緩存,如果有則直接返回,否則進行下一步。

    3. 將請求轉發給指向的DNS服務器。

    4. 查看域名是否本地解析,是則本地解析返回,否則進行下一步。

    5. 本地DNS服務器首先在緩存中查找,有則返回,無則進行下一步。 \這里的緩存是從其他dns服務器學習來的

    6. 向全球13個根域服務器發起DNS請求,根域返回org域的地址列表。

    7. 使用某一個org域的IP地址,發起DNS請求, org域返回kernel域服務器地址列表。

    8. 使用某一個kernel域IP地址,發起DNS請求, kernel域返回www.kernel.org主機的IP地址,本地DNS服務收到后,返回給客戶機,并在本地DNS服務器保存一份。

    為了安全性,DNS服務器不是隨便搭建的,我們最多搭建一個簡單的DNS服務器。

    3. DNS軟件信息

    軟件名稱

    bind

    服務名稱

    named

    軟件端口

    UDP 53 數據通信(域名解析)

    TCP 53 數據同步 (主從同步)

    配置文件:

    主配置文件: /etc/nameed.conf (服務器運行參數)

    區域配置文件: /etc/named.rfc1912.zones (服務器解析的區域配置,正反向區域定義信息)

    數據配置文件: /var/named/xx.xx (主機名和IP地址的對應解析關系,及主從同步信息)

    記錄類型:

    A:

    地址記錄,用來指定域名的IPv4地址的記錄

    CNAME:

    將域名指向另一個域名,再由另一個域名提供IP地址,就需要添加CNAME記錄

    TXT:

    可填寫任何東西,長度限制255。絕大多數的TXT記錄是用來做SPF的(反垃圾郵件)

    NS:

    域名服務器記錄,如果需要把子域名教給其他DNS服務商解析,就需要添加NS記錄。

    AAAA:

    地址記錄,用來指定域名的IPv6地址的記錄

    MX:

    郵件交換記錄,如果需要設置郵箱,讓郵箱能收到郵件,就需要添加MX記錄。

    4. DNS 實驗搭建

    4.1 DNS基本服務搭建

    環境準備

    ip

    節點

    主機名

    10.30.59.193

    master

    dns1

    10.30.59.194

    測試

    dns2

    基礎準備

    # 修改主機名
    
    [root@localhost ~]# hostnamectl set-hostname dns1
    
    [root@localhost ~]# bash
    
    # 配置本地yum源
    
    [root@dns1 ~]# mv /etc/yum.repos.d/* /media/
    
    [root@dns1 ~]# vi /etc/yum.repos.d/local.repo
    
    [centos]
    
    name=centos
    
    baseurl=file:///opt/centos
    
    gpgcheck=0
    
    enabled=1
    
    [root@dns1 ~]# mkdir -p /opt/centos
    
    [root@dns1 ~]# mount /dev/sr0 /opt/centos/
    
    mount: /dev/sr0 is write-protected, mounting read-only
    
    [root@dns1 ~]# yum repolist
    
    Loaded plugins: fastestmirror
    
    centos | 3.6 kB 00:00:00
    
    (1/2): centos/group_gz | 155 kB 00:00:00
    
    (2/2): centos/primary_db | 2.8 MB 00:00:00
    
    Determining fastest mirrors
    
    repo id repo name status
    
    centos centos 3,723
    
    repolist: 3,723
    
    # 關閉防火墻
    
    [root@dns1 ~]# systemctl stop firewalld
    
    [root@dns1 ~]# systemctl disable firewalld
    
    Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
    
    Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
    
    [root@dns1 ~]# setenforce 0
    
    [root@dns1 ~]# vi /etc/selinux/config
    
    SELINUX=disabled
    
    # 安裝常用工具
    
    [root@dns1 ~]# yum install -y vim net-tools bash-c*


    服務搭建

    # 安裝服務
    
    [root@dns1 ~]# yum -y install bind
    
    # 配置注意事項 所有內容以;結尾 ,, 大括號兩側內用空格分隔
    
    # 配置主配置文件
    
    [root@dns1 named]# vim /etc/named.conf
    
    options {
    
    listen-on port 53 { any; }; //設置服務器監聽網卡,any 所有的
    
    listen-on-v6 port 53 { ::1; };
    
    directory "/var/named"; // 數據文件保存位置
    
    dump-file "/var/named/data/cache_dump.db";
    
    statistics-file "/var/named/data/named_stats.txt";
    
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    
    allow-query { any; }; //設置訪問服務器的客戶端地址, any 所有
    
    
    
    include "/etc/named.rfc1912.zones"; // 最下面有一行配置文件,指定了區域配置文件。
    
    # 配置區域配置文件
    
    [root@dns1 ~]# vim /etc/named.rfc1912.zones
    
    zone "bilibili.com" IN {
    
    type master;
    
    file "bilibili.localhost";
    
    allow-update { none; };
    
    };
    
    zone "59.30.10.in-addr.arpa" IN {
    
    type master;
    
    file "bilibili.loopback";
    
    allow-update { none; };
    
    };
    
    [root@dns1 ~]# cd /var/named/
    
    [root@dns1 named]# ls
    
    data dynamic named.ca named.empty named.localhost named.loopback slaves
    
    # 注意與區域配置文件相一致
    
    [root@dns1 named]# cp -a named.localhost bilibili.localhost
    
    [root@dns1 named]# cp -a named.loopback bilibili.loopback
    
    # 正向解析
    
    [root@dns1 named]# vim bilibili.localhost
    
    $TTL 1D
    
    @ IN SOA bilibili.com. rname.invalid. (
    
    0 ; serial
    
    1D ; refresh
    
    1H ; retry
    
    1W ; expire
    
    3H ) ; minimum
    
    NS dns.bilibili.com.
    
    dns A 10.30.59.193
    
    www A 10.30.59.195
    
    # 反向解析
    
    [root@dns1 named]# vim bilibili.loopback
    
    $TTL 1D
    
    @ IN SOA bilibili.com. rname.invalid. (
    
    0 ; serial
    
    1D ; refresh
    
    1H ; retry
    
    1W ; expire
    
    3H ) ; minimum
    
    NS dns.bilibili.com.
    
    93 PTR dns.bilibili.com.
    
    95 PTR www.bilibili.com.
    
    # 啟動服務
    
    [root@dns1 named]# systemctl restart named
    
    [root@dns1 named]# netstat -ntlp |grep named
    
    tcp 0 0 10.30.59.193:53 0.0.0.0:* LISTEN 12550/named
    
    tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 12550/named
    
    tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 12550/named
    
    tcp6 0 0 ::1:53 :::* LISTEN 12550/named
    
    tcp6 0 0 ::1:953 :::* LISTEN 12550/named


    測試

    # 使用第二臺虛擬機, 配置dns為DNS服務器,測試
    
    [root@localhost ~]# hostnamectl set-hostname dns2
    
    [root@localhost ~]# bash
    
    [root@dns2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16780032
    
    DNS1=10.30.59.193
    
    [root@dns2 ~]# systemctl restart network
    
    # bilibili地址顯示為10.30.59.195,說明配置成功。
    
    [root@dns2 ~]# ping www.bilibili.com
    
    PING www.bilibili.com (10.30.59.195) 56(84) bytes of data.
    
    From 10.30.59.194 icmp_seq=1 Destination Host Unreachable
    
    From 10.30.59.194 icmp_seq=2 Destination Host Unreachable
    
    From 10.30.59.194 icmp_seq=3 Destination Host Unreachable
    
    From 10.30.59.194 icmp_seq=4 Destination Host Unreachable


    4.2主從DNS服務器

    目的:

    減輕主服務器的壓力,備份

    環境準備:

    centos7-1511,關閉防火墻 selinux

    ip

    節點

    主機名

    10.30.59.193

    master

    dns1

    10.30.59.194

    slave

    dns2

    10.30.59.195

    ceshi

    localhost

    # 主從兩個節點
    
    # 配置本地yum源
    
    [root@dns1 ~]# cat /etc/yum.repos.d/local.repo
    
    [centos]
    
    name=centos
    
    baseurl=file:///opt/centos
    
    gpgcheck=0
    
    enabled=1
    
    [root@dns2 ~]# cat /etc/yum.repos.d/local.repo
    
    [centos]
    
    name=centos
    
    baseurl=file:///opt/centos
    
    gpgcheck=0
    
    enabled=1
    
    # 安裝服務
    
    [root@dns1 ~]# yum install -y bind
    
    [root@dns2 ~]# yum install -y bind
    
    主節點配置
    
    # 主節點配置
    
    [root@dns1 ~]# vim /etc/named.conf
    
    options {
    
    listen-on port 53 { 10.30.59.193; };
    
    listen-on-v6 port 53 { ::1; };
    
    directory "/var/named";
    
    dump-file "/var/named/data/cache_dump.db";
    
    statistics-file "/var/named/data/named_stats.txt";
    
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    
    allow-query { any; };
    
    # 區域配置文件只保留一個模板文件
    
    [root@dns1 ~]# vim /etc/named.rfc1912.zones
    
    zone "bilibili.com" IN {
    
    type master;
    
    file "bilibili.localhost";
    
    allow-update { 10.30.59.194; };
    
    };
    
    # 修改正向解析配置文件 相對于基本服務,這里多配置一個serial充當版本作用
    
    [root@dns1 ~]# cd /var/named/
    
    [root@dns1 named]# cp -a named.localhost bilibili.localhost
    
    [root@dns1 named]# vim bilibili.localhost
    
    $TTL 1D
    
    @ IN SOA bilibili.com. rname.invalid. (
    
    20211208 ; serial
    
    1D ; refresh
    
    1H ; retry
    
    1W ; expire
    
    3H ) ; minimum
    
    NS dns.bilibili.com.
    
    dns A 10.30.59.193
    
    www A 10.30.59.195
    
    [root@dns1 named]# service named restart
    
    Redirecting to /bin/systemctl restart named.service


    從節點配置

    [root@dns2 ~]# vim /etc/named.conf
    
    10 options {
    
    11 listen-on port 53 { 10.30.59.194; };
    
    12 listen-on-v6 port 53 { ::1; };
    
    13 directory "/var/named";
    
    14 dump-file "/var/named/data/cache_dump.db";
    
    15 statistics-file "/var/named/data/named_stats.txt";
    
    16 memstatistics-file "/var/named/data/named_mem_stats.tx t";
    
    17 allow-query { any; };
    
    # 配置區域配置文件 只保留一個模板文件
    
    [root@dns2 ~]# vim /etc/named.rfc1912.zones
    
    zone "bilibili.com" IN {
    
    type slave;
    
    masters { 10.30.59.193; };
    
    file "slaves/bilibili.localhost";
    
    allow-update { none; };
    
    };
    
    # 從服務器不需要配置解析文件,會自動同步master節點服務器文件到slaves目錄下
    
    # 啟動前,確認為空目錄
    
    [root@dns2 ~]# ls /var/named/slaves/
    
    # 啟動服務
    
    [root@dns2 ~]# service named start
    
    Redirecting to /bin/systemctl start named.service
    
    [root@dns2 ~]# ls /var/named/slaves/
    
    bilibili.localhost


    驗證結果

    給測試機配置dns為從服務器的地址

    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16780032
    
    # 從節點的地址
    
    DNS1=10.30.59.194
    
    [root@localhost ~]# systemctl restart netwoprk
    
    Failed to restart netwoprk.service: Unit netwoprk.service failed to load: No such file or directory.
    
    [root@localhost ~]# systemctl restart network
    
    [root@localhost ~]# ping www.bilibili.com
    
    PING www.bilibili.com (10.30.59.195) 56(84) bytes of data.
    
    64 bytes from 10.30.59.195: icmp_seq=1 ttl=64 time=0.028 ms
    
    64 bytes from 10.30.59.195: icmp_seq=2 ttl=64 time=0.042 ms
    
    64 bytes from 10.30.59.195: icmp_seq=3 ttl=64 time=0.040 ms
    
    ^C
    
    --- www.bilibili.com ping statistics ---
    
    3 packets transmitted, 3 received, 0% packet loss, time 2001ms
    
    rtt min/avg/max/mdev=0.028/0.036/0.042/0.009 ms


    4.3DNS緩存服務器


    目的:

    加快解析速度,提高工作效率

    實驗軟件:

    dnsmasq

    操作:

    接上一個環境繼續操作,把從服務器當作緩存服務器。

    # 停掉從服務器
    
    [root@dns2 ~]# service named stop
    
    Redirecting to /bin/systemctl stop named.service
    
    # 安裝dnsmasq 可能已經安裝。
    
    yum install -y dnsmasq
    
    # 修改配置文件
    
    [root@dns2 ~]# vim /etc/dnsmasq.conf
    
    domain=bilibili.com
    
    server=10.30.59.193
    
    cache-size=150
    
    # 重啟服務
    
    [root@dns2 ~]# service dnsmasq restart
    
    Redirecting to /bin/systemctl restart dnsmasq.service
    
    # 測試 如果沒有nslookup命令,下載bind-utils
    
    [root@localhost ~]# nslookup www.bilibili.com
    
    Server: 10.30.59.194
    
    Address: 10.30.59.194#53
    
    Name: www.bilibili.com
    
    Address: 10.30.59.195
    
    # 關掉主服務器
    
    [root@dns1 ~]# systemctl stop named
    
    # 再次測試 非權威回答
    
    [root@localhost ~]# nslookup www.bilibili.com
    
    Server: 10.30.59.194
    
    Address: 10.30.59.194#53
    
    Non-authoritative answer:
    
    Name: www.bilibili.com
    
    Address: 10.30.59.195


    請求順序

    # 客戶端從緩存服務器請求, 緩存服務器沒有,去主服務查找, 主服務器沒啟動,測試沒反應, 啟動主服務器,再次測試, 緩存服務器再次請求主服務器,獲取域名,返回給客戶端。

    # 主服務器沒啟動
    
    [root@localhost ~]# nslookup dns.bilibili.com
    
    ^C
    
    # 啟動主服務器
    
    [root@dns1 ~]# systemctl start named
    
    [root@localhost ~]# nslookup dns.bilibili.com
    
    Server: 10.30.59.194
    
    Address: 10.30.59.194#53
    
    Name: dns.bilibili.com
    
    Address: 10.30.59.193
    
    # 再次關閉,有緩存可以解析到。
    
    [root@dns1 ~]# systemctl stop named
    
    [root@localhost ~]# nslookup dns.bilibili.com
    
    Server: 10.30.59.194
    
    Address: 10.30.59.194#53
    
    Non-authoritative answer:
    
    Name: dns.bilibili.com
    
    Address: 10.30.59.193


    4.4 智能DNS(分離解析)

    目的:

    NDS分離解析即將相同域名解析為不同的IP地址,實現網絡中一些網站為了讓用戶有更好的體驗效果解析速度更快,就把來自不通運營商的用戶解析到相對應的服務器,這樣就大大提升了訪問速度。

    實驗環境:

    配置一臺apache服務器,兩個網卡模擬內外網, 兩臺測試機從內網外網分別訪問。dns能夠正確解析(內網地址訪問解析內網地址,外網地址訪問解析外網地址)。

    節點

    IP

    主機名

    備注

    內網測試機

    192.168.100.10

    int

    內外網選擇網絡模式:內: vmnat1 192.168.100.0/24外: vmnat 8 192.168.200.0/24

    外網測試機

    192.168.200.10

    ext

    apache

    192.168.100.20

    192.168.200.20

    apache

    dns+路由

    192.168.100.30

    192.168.200.30

    dns

    實驗大綱:

    1、安裝bind軟件

    2、內核配置文件開啟路由轉發,修改/etc/sysctl.conf

    3、修改主配置文件/etc/named.conf 配置any,視圖

    4、生成自己定義的區域配置文件。

    5、配置數據文件

    內網正向解析,外網正向解析

    6、重啟服務

    7、效果測試

    nslookup

    基礎環境準備:

    修改主機名 配置ip 所有節點關閉防火墻、selinux、配置本地yum。

    # 內網測試機
    
    [root@localhost ~]# hostnamectl set-hostname net1
    
    [root@localhost ~]# bash
    
    [root@int ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
    
    TYPE=Ethernet
    
    BOOTPROTO=static
    
    DEFROUTE=yes
    
    PEERDNS=yes
    
    PEERROUTES=yes
    
    IPV4_FAILURE_FATAL=no
    
    IPV6INIT=yes
    
    IPV6_AUTOCONF=yes
    
    IPV6_DEFROUTE=yes
    
    IPV6_PEERDNS=yes
    
    IPV6_PEERROUTES=yes
    
    IPV6_FAILURE_FATAL=no
    
    NAME=eno16777736
    
    ONBOOT=yes
    
    IPADDR=192.168.100.10
    
    NETMASK=255.255.255.0
    
    GATEWAY=192.168.100.30
    
    DNS1=192.168.100.30
    
    # 外網測試機
    
    [root@localhost ~]# hostnamectl set-hostname ext
    
    [root@localhost ~]# bash
    
    [root@ext ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
    
    TYPE=Ethernet
    
    BOOTPROTO=static
    
    DEFROUTE=yes
    
    PEERDNS=yes
    
    PEERROUTES=yes
    
    IPV4_FAILURE_FATAL=no
    
    IPV6INIT=yes
    
    IPV6_AUTOCONF=yes
    
    IPV6_DEFROUTE=yes
    
    IPV6_PEERDNS=yes
    
    IPV6_PEERROUTES=yes
    
    IPV6_FAILURE_FATAL=no
    
    NAME=eno16777736
    
    ONBOOT=yes
    
    IPADDR=192.168.200.10
    
    NETMASK=255.255.255.0
    
    GATEWAY=192.168.200.2
    
    DNS1=192.168.200.30
    
    # 配置雙網卡出了一個問題: 一開始本著第一塊網卡僅主機模式,然后第二塊網卡net模式,就調整第一塊網卡為僅主機模式,新加的第二塊網卡為net模式, 結果網絡不行,就重新配置為第一塊網卡為net模式,第二塊網卡為net模式。 不影響本案例。
    
    # apache
    
    [root@localhost ~]# hostnamectl set-hostname apache
    
    [root@localhost ~]# bash
    
    [root@apache ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
    
    TYPE=Ethernet
    
    BOOTPROTO=static
    
    DEFROUTE=yes
    
    PEERDNS=yes
    
    PEERROUTES=yes
    
    IPV4_FAILURE_FATAL=no
    
    IPV6INIT=yes
    
    IPV6_AUTOCONF=yes
    
    IPV6_DEFROUTE=yes
    
    IPV6_PEERDNS=yes
    
    IPV6_PEERROUTES=yes
    
    IPV6_FAILURE_FATAL=no
    
    NAME=eno16777736
    
    ONBOOT=yes
    
    IPADDR=192.168.200.20
    
    NETMASK=255.255.255.0
    
    GATEWAY=192.168.200.2
    
    DNS1=114.114.114.114
    
    [root@apache ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984
    
    TYPE=Ethernet
    
    BOOTPROTO=static
    
    DEFROUTE=yes
    
    PEERDNS=yes
    
    PEERROUTES=yes
    
    NAME=eno33554984
    
    ONBOOT=yes
    
    IPADDR=192.168.100.20
    
    NETMASK=255.255.255.0
    
    # dns
    
    [root@localhost ~]# hostnamectl set-hostname dns
    
    [root@localhost ~]# bash
    
    [root@dns ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
    
    TYPE=Ethernet
    
    BOOTPROTO=static
    
    DEFROUTE=yes
    
    PEERDNS=yes
    
    PEERROUTES=yes
    
    IPV4_FAILURE_FATAL=no
    
    IPV6INIT=yes
    
    IPV6_AUTOCONF=yes
    
    IPV6_DEFROUTE=yes
    
    IPV6_PEERDNS=yes
    
    IPV6_PEERROUTES=yes
    
    IPV6_FAILURE_FATAL=no
    
    NAME=eno16777736
    
    ONBOOT=yes
    
    IPADDR=192.168.200.30
    
    NETMASK=255.255.255.0
    
    GATEWAY=192.168.200.2
    
    DNS1=114.114.114.114
    
    [root@dns ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984
    
    TYPE=Ethernet
    
    BOOTPROTO=static
    
    DEFROUTE=yes
    
    PEERDNS=yes
    
    PEERROUTES=yes
    
    IPV4_FAILURE_FATAL=no
    
    IPV6INIT=yes
    
    IPV6_AUTOCONF=yes
    
    IPV6_DEFROUTE=yes
    
    IPV6_PEERDNS=yes
    
    IPV6_PEERROUTES=yes
    
    IPV6_FAILURE_FATAL=no
    
    NAME=eno33554984
    
    ONBOOT=yes
    
    IPADDR=192.168.100.30
    
    NETMASK=255.255.255.0
    
    # apache 節點安裝httpd
    
    [root@apache ~]# yum install -y httpd
    
    [root@apache ~]# vim /var/www/html/index.html
    
    dns分離解析驗證成功!
    
    [root@apache ~]# systemctl start httpd
    
    [root@apache ~]# systemctl enable httpd
    
    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
    
    # dns節點安裝bind。
    
    [root@dns ~]# yum install -y bind


    測試一下直接地址訪問看看有沒有問題

    分離解析配置

    # dns節點永久開啟路由轉發
    
    [root@dns ~]# vim /etc/sysctl.conf
    
    net.ipv4.ip_forward=1
    
    [root@dns ~]# sysctl -p
    
    net.ipv4.ip_forward=1
    
    #修改主配置文件
    
    # 兩個any 監聽任意地址
    
    # 加兩個視圖 分別監聽內網和其他地址 ,視圖匹配規則為自上而下匹配,注意順序。 match-client匹配地址, include 指定區域配置文件。
    
    [root@dns ~]# vim /etc/named.conf
    
    listen-on port 53 { any; };
    
    allow-query { any; };
    
    view lan {
    
    match-clients { 192.168.100.0/24; };
    
    zone "." IN {
    
    type hint;
    
    file "named.ca";
    
    };
    
    include "/etc/lan.zones";
    
    };
    
    view wan {
    
    match-clients { any; };
    
    zone "." IN {
    
    type hint;
    
    file "named.ca";
    
    };
    
    include "/etc/wan.zones";
    
    };
    
    #include "/etc/named.rfc1912.zones";
    
    # 修改區域配置文件
    
    [root@dns ~]# cp -a /etc/named.rfc1912.zones /etc/lan.zones
    
    [root@dns ~]# vim /etc/lan.zones
    
    zone "bilibili.com" IN {
    
    type master;
    
    file "lan.localhost";
    
    allow-update { none; };
    
    };
    
    [root@dns ~]# cp -a /etc/lan.zones /etc/wan.zones
    
    [root@dns ~]# vim /etc/wan.zones
    
    zone "bilibili.com" IN {
    
    type master;
    
    file "wan.localhost";
    
    allow-update { none; };
    
    };
    
    # 修改解析文件
    
    [root@dns etc]# cd /var/named/
    
    [root@dns named]# ls
    
    data dynamic named.ca named.empty named.localhost named.loopback slaves
    
    [root@dns named]# cp -a named.localhost lan.localhost
    
    [root@dns named]# vim lan.localhost
    
    $TTL 1D
    
    @ IN SOA bilibili.com. rname.invalid. (
    
    0 ; serial
    
    1D ; refresh
    
    1H ; retry
    
    1W ; expire
    
    3H ) ; minimum
    
    NS dns.bilibili.com.
    
    dns A 192.168.100.30
    
    www A 192.168.100.20
    
    [root@dns named]# cp -a lan.localhost wan.localhost
    
    [root@dns named]# vim wan.localhost
    
    $TTL 1D
    
    @ IN SOA bilibili.com. rname.invalid. (
    
    0 ; serial
    
    1D ; refresh
    
    1H ; retry
    
    1W ; expire
    
    3H ) ; minimum
    
    NS dns.bilibili.com.
    
    dns A 192.168.200.30
    
    www A 192.168.200.20


    測試

    # 啟動服務
    
    [root@dns named]# systemctl start named
    
    # 內網機測試
    
    [root@int ~]# curl www.bilibili.com
    
    dns分離解析驗證成功! \\ 查看是否顯示你在主頁顯示的內容。
    
    # 外網機測試
    
    [root@ext ~]# curl www.bilibili.com
    
    dns分離解析驗證成功! \\查看是否同理
    
    # 再使用nslookup測試
    
    # 兩個節點都下載
    
    [root@ext ~]# yum install -y bind-utils
    
    [root@int ~]# nslookup www.bilibili.com
    
    Server: 192.168.100.30
    
    Address: 192.168.100.30#53
    
    Name: www.bilibili.com
    
    Address: 192.168.100.20
    
    [root@ext ~]# nslookup www.bilibili.com
    
    Server: 192.168.200.30
    
    Address: 192.168.200.30#53
    
    Name: www.bilibili.com
    
    Address: 192.168.200.20
    
    # 可以發現內外網使用的dns地址不同,并且解析出來的ip不同。實驗成功!


    如果ip更多,就多寫視圖,多謝區域配置文件與解析文件。

    拓展知識: 郵件服務

    Ceph在存儲中的層次

    第一層:物理存儲介質。

    1. LUN:通常將硬件生成生成的虛擬磁盤叫LUN, 比如raid卡生成的虛擬磁盤。
    2. Volume:通常將軟件層次生成的虛擬磁盤叫做卷,比如LVM生成的邏輯卷。
    3. Disk:就是物理磁盤

    第二層:內核層次的文件系統,維護文件到磁層磁盤的映射關系。(用戶一般不需要管)

    第三層:應用層次的文件系統(需要用戶自己手工安裝應用程序,啟動應用進程)

    第四層:網絡文件訪問系統NFS, CIFS(服務器端裝Server,客戶端裝Client,掛載目錄遠程訪問)

    Ceph原理

    參考:

    http://www.uml.org.cn/yunjisuan/2014041107.asp

    Ceph存儲系統的邏輯結構

    Rados的系統邏輯結構

    Ceph尋址流程

    ceph部署網絡拓撲

    備注:Cluster Network可選,但是最好建議有該網絡,用于OSD擴展時,后端網絡傳輸數據用。

    在實際工作中時,深有體會,如果只有public network,在OSD擴展時,由于ceph需要重新“搬運”數據,導致升級長達5個小時。如果有專門的集群網絡(萬兆交換機+光釬),幾分鐘升級完成。

    Ceph安裝(ceph-deploy)

    參考:

    http://ceph.com/

    http://docs.openfans.org/ceph/ http://docs.ceph.org.cn/ (上述官網的漢化版)

    http://docs.openstack.org/mitaka/config-reference/block-storage.html

    環境準備以及各ceph節點初始化

    • 部署邏輯架構

    節點

    安裝組件

    備注

    hostname:ceph1

    ip:192.168.100.110

    ceph-deploy、mon、osd

    OS:CentOS7.9

    Admin Node與Ceph1共享

    hostname:ceph2

    ip:192.168.100.111

    mon、osd

    hostname:ceph3

    ip:192.168.100.112

    mon、osd

    該章節的操作均通過root執行且在各個ceph節點均要執行

    • 修改/etc/hostname

    #vi /etc/hostname #如果為其他節點調整為其他節點的名稱

    ceph{number} #如ceph1

    #hostname -F /etc/hostname #立即生效,斷開shell重新登錄

    • 創建安裝用戶irteam且該用戶不需要tty

    #useradd -d /home/irteam -k /etc/skel -m irteam

    #sudo passwd irteam

    #echo " irteam ALL=(root) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/irteam

    #chmod 0440 /etc/sudoers.d/irteam

    修改/etc/sudoers,irteam用戶不需要tty

    #chmod 755 /etc/sudoers

    #vi /etc/sudoers #添加如下配置,而不是將原來的Default requiretty注釋掉

    Defaults:irteam !requiretty

    #chmod 440 /etc/sudoers

    • yum源以及ceph源設置

    #yum clean all

    #rm -rf /etc/yum.repos.d/*.repo

    #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    #sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo

    #sed -i 's/$releasever/7.2.1511/g' /etc/yum.repos.d/CentOS-Base.repo

    #vi /etc/yum.repos.d/ceph.repo #增加ceph源

    [ceph]

    name=ceph

    baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/

    gpgcheck=0

    [ceph-noarch]

    name=cephnoarch

    baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/

    gpgcheck=0

    • 安裝ceph

    #yum makecache

    #yum install -y ceph

    #ceph --version #版本查看

    ceph version 10.2.2 (45107e21c568dd033c2f0a3107dec8f0b0e58374)

    • 關閉selinux & firewalld

    #sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

    #setenforce 0

    #systemctl stop firewalld

    #systemctl disable firewalld

    • 同步時間節點(rdate & ntp均可以)

    參考:http://www.android100.org/html/201407/26/46537.html

    #timedatectl set-timezone Asia/Shanghai #設置時區

    #yum install -y rdate

    #rdate -s ?tick.greyware.com #選個可用且權威的服務器

    #echo "00 0 1 * * root rdate -s tick.greyware.com" >> /etc/crontab #加入調度

    部署Ceph集群

    備注:以下操作均在admin-node節點執行,在本文中,由于admin-node與ceph1共享,所以在ceph1執行就可以了,統一用用戶:irteam執行

    • 修改/etc/hosts

    #sudo vi /etc/hosts

    192.168.100.110 ceph1

    192.168.100.111 ceph2

    192.168.100.112 ceph3

    • 生成密鑰對 & 復制秘鑰到各節點(防止部署輸入密碼,即無密碼驗證)

    #sudo su - irteam

    #ssh-keygen

    Generating public/private key pair.

    Enter file in which to save the key (/irteam/.ssh/id_rsa):

    Enter passphrase (empty for no passphrase):

    Enter same passphrase again:

    Your identification has been saved in /irteam/.ssh/id_rsa.

    Your public key has been saved in /irteam/.ssh/id_rsa.pub.

    #ssh-copy-id irteam@ceph1

    #ssh-copy-id irteam@ceph2

    #ssh-copy-id irteam@ceph3

    • 用戶配置,防止部署時輸入用戶名

    #sudo su - irteam #如果當前登錄用戶是irteam,則忽略該步驟

    #vi ~/.ssh/config

    StrictHostKeyChecking no

    Host ceph1

    Hostname ceph1

    User irteam

    Host ceph2

    Hostname ceph2

    User irteam

    Host ceph3

    Hostname ceph3

    User irteam

    #chmod 600 ~/.ssh/config

    • 安裝部署工具

    #sudo yum -y install ceph-deploy

    #ceph-deploy --version

    1.5.34

    • 創建集群

    #sudo su - irteam #如果當前登錄用戶是irteam,則不用執行

    #mkdir ~/my-cluster && cd ~/my-cluster

    #創建集群:在當前目錄下生成ceph.conf以及ceph.mon.keyring

    #ceph-deploy new ceph1 ceph2 ceph3

    #ls ~/my-cluster #查看生成的文件

    ceph.conf ceph-deploy-ceph.log ceph.mon.keyring

    修改集群ceph.conf配置,增加public_network,增加monitor之間的時差(默認為0.05s,現改為2s),總共的副本數據調整為2

    #vi ceph.conf

    [global]

    fsid=7cec0691-c713-46d0-bce8-5cb1d57f051f

    mon_initial_members=ceph1, ceph2, ceph3 #也可以用IP,用hostname最佳

    mon_host=192.168.11.119,192.168.11.124,192.168.11.112

    auth_cluster_required=cephx

    auth_service_required=cephx

    auth_client_required=cephx

    public_network=192.168.100.0/24

    mon_clock_drift_allowed=2

    osd_pool_default_size=2

    • 部署monitors

    #ceph-deploy mon create-initial

    #ll ~/my-cluster

    ceph.bootstrap-mds.keyring

    ceph.bootstrap-rgw.keyring

    ceph.conf

    ceph.mon.keyring

    ceph.bootstrap-osd.keyring

    ceph.client.admin.keyring

    ceph-deploy-ceph.log

    #sudo ceph -s #查看集群情況

    cluster 7cec0691-c713-46d0-bce8-5cb1d57f051f

    health HEALTH_ERR

    no osds

    monmap e1: 3 mons at {ceph1=192.168.100.119:6789/0,ceph2=192.168.100.111:6789/0,ceph3=192.168.100.112:6789/0}

    election epoch 4, quorum 0,1,2 ceph3,ceph1,ceph2

    osdmap e1: 0 osds: 0 up, 0 in

    flags sortbitwise

    pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects

    0 kB used, 0 kB / 0 kB avail

    64 creating

    • 部署osds

    由于沒有足夠多的磁盤(如果用磁盤請參考維護章節),用文件夾:

    #以下創建文件夾,賦權的動作均在ceph1,ceph2,ceph3上執行

    #sudo mkdir /var/local/osd1 && sudo chmod 777 -R /var/local/osd1

    osd預處理與激活

    #ceph-deploy osd prepare ceph1:/var/local/osd1 ceph2:/var/local/osd1 ceph3:/var/local/osd1

    #ceph-deploy osd activate ceph1:/var/local/osd1 ceph2:/var/local/osd1 ceph3:/var/local/osd1

    備注:

    a.如果你有足夠多的磁盤,你也可以直接對磁盤操作

    #ceph-deploy osd prepare ceph1:sdb

    #ceph-deploy osd activate ceph1:sdb

    b.對上述osd prepare & osd activate,也可以一步完成

    #ceph-deploy osd create ceph1:sdb

    查看集群狀態

    #sudo ceph -s

    cluster 7cec0691-c713-46d0-bce8-5cb1d57f051f

    health HEALTH_OK

    monmap e1: 3 mons at {ceph1=192.168.100.110:6789/0,ceph2=192.168.100.111:6789/0,ceph3=192.168.100.112:6789/0}

    election epoch 4, quorum 0,1,2 ceph3,ceph1,ceph2

    osdmap e15: 3 osds: 3 up, 3 in

    flags sortbitwise

    pgmap v26: 64 pgs, 1 pools, 0 bytes data, 0 objects

    29590 MB used, 113 GB / 142 GB avail

    64 active+clean

    Ceph安裝(kolla)

    除了官方推薦的ceph-deploy安裝方式,你還可以選擇如下安裝方式:

    通過工具ansible,遠程登錄到各node節點安裝,并且讓mon,osd,rgw用docker方式來承載

    另外:由于我們使用docker的目的是想部署openstack,涉及到openstack部分,則不涉及。

    如果不部署openstack,則需要將openstack的所有組件設置為no, 只需要打開ceph部分,如:

    vi /git/kolla/etc/kolla/globals.yml

    enable_keystone: “no”,

    enable_horizon:”no”,

    ……

    enable_${compName}: “no”,

    enable_ceph: “yes”

    ….

    環境準備以及各ceph節點初始化

    • 部署邏輯架構

    節點

    安裝組件

    備注

    Kolla節點

    ip:192.168.100.144

    kolla

    OS:Centos7.9

    hostname:ceph1

    ip:192.168.100.133

    mon、osd

    hostname:ceph2

    ip:192.168.100.117

    mon、osd

    hostname:ceph3

    ip:192.168.100.148

    mon、osd

    該章節的操作可以通過root用戶執行且在各個ceph節點均要執行

    • 修改/etc/hostname

    #vi /etc/hostname #如果為其他節點調整為其他節點的名稱

    ceph{nuber} #如ceph1

    #hostname -F /etc/hostname #立即生效,斷開shell重新登錄

    • 創建安裝用戶irteam且該用戶不需要tty

    #useradd -d /home/irteam -k /etc/skel -m irteam

    #sudo passwd irteam

    #echo " irteam ALL=(root) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/irteam

    #chmod 0440 /etc/sudoers.d/irteam

    • 關閉selinux & firewalld

    #sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

    #setenforce 0

    #systemctl stop firewalld

    #systemctl disable firewalld

    • 同步時間節點(rdate & ntp均可以)

    參考:http://www.android100.org/html/201407/26/46537.html

    #timedatectl set-timezone Asia/Shanghai #設置時區

    #yum install -y rdate

    #rdate -s ?tick.greyware.com #選個可用且權威的服務器

    #echo "00 0 1 * * root rdate -s tick.greyware.com" >> /etc/crontab #加入調度

    • 安裝docker以及docker-py

    #curl -sSL https://get.docker.io | bash

    #docker --version

    Docker version ${version}, build 20f81dd

    #vi /usr/lib/systemd/system/docker.service #添加下面的MountFlags=shared

    MountFlags=shared

    #systemctl daemon-reload

    #systemctl restart docker #重啟docker

    #yum install -y python-pip

    #pip install -U docker-py

    部署Ceph集群

    以下操作在kolla節點執行,統一用用戶:irteam執行

    • 修改/etc/hosts

    #sudo vi /etc/hosts

    192.168.100.133 ceph1

    192.168.100.117 ceph2

    192.168.100.148 ceph3

    • 生成密鑰對 & 復制秘鑰到各節點(ansible通過公鑰連接到主機)

    #sudo su - irteam

    #ssh-keygen

    Generating public/private key pair.

    Enter file in which to save the key (/irteam/.ssh/id_rsa):

    Enter passphrase (empty for no passphrase):

    Enter same passphrase again:

    Your identification has been saved in /irteam/.ssh/id_rsa.

    Your public key has been saved in /irteam/.ssh/id_rsa.pub.

    #ssh-copy-id irteam@ceph1

    #ssh-copy-id irteam@ceph2

    #ssh-copy-id irteam@ceph3

    • 下載kolla & 安裝ansible & 配置ansible的inventory文件

    #sudo mkdir -p /git/ && cd /git/ #目錄根據自己的調整

    #git clone https://oss.navercorp.com/paas/kolla.git #也可以從gitHub下載

    #pip install -U ansible==1.9.4 #如果從github下載kolla,注意kolla版本與ansible版本的#對應關系

    #sudo vi multimode-inventory

    ….略

    [ceph-mon]

    ceph1

    [ceph-osd]

    ceph1 ansible_sudo=True

    ceph2 ansible_sudo=True

    ceph3 ansible_sudo=True

    [ceph-rgw]

    …略

    備注:irteam必須要有sudo到root用戶的權限

    • 將上面[ceph-osd]節點的磁盤標注為kolla可以識別的名稱

    #登錄到各ceph節點,確認哪些盤可以作為osd盤,打上標記,執行完后返回kolla節點

    #sudo parted /dev/xvdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1

    #sudo parted /dev/xvdb print #查看

    Model: Xen Virtual Block Device (xvd)

    Disk /dev/xvdb: 53.7GB

    Sector size (logical/physical): 512B/512B

    Partition Table: gpt

    Disk Flags:

    Number Start End Size File system Name Flags

    1 1049kB 53.7GB 53.7GB KOLLA_CEPH_OSD_BOOTSTRAP

    • [可選]設置外置的journal drive

    如果不設置,有沒有關系,會自動劃分5G的journal 空間

    • 設置ceph可部署 & 部署

    #vi /git/kolla/etc/kolla/globals.yml

    …略

    enable_ceph: "yes"

    enable_ceph_rgw: "no"

    …略

    #kolla最終部署

    #/git/kolla/tools/kolla-ansible deploy --configdir /git/openstack-deploy/config-test -i \

    /git/openstack-deploy/config-test/multinode-inventory

    Ceph維護

    整個集群維護

    • Ceph狀態查看

    #sudo ceph -s #當前狀態查看

    #sudo ceph -w #實時狀態查看

    health HEALTH_OK

    monmap e3: 1 mons at {ceph3=192.168.11.112:6789/0}

    election epoch 7, quorum 0 ceph3

    osdmap e67: 4 osds: 4 up, 4 in

    flags sortbitwise

    pgmap v60965: 64 pgs, 1 pools, 0 bytes data, 0 objects

    57416 MB used, 133 GB / 189 GB avail

    64 active+clean

    2016-08-19 01:16:01.623581 mon.0 [INF] pgmap v60965: 64 pgs: 64 active+clean; 0 bytes data, 57416 MB used, 133 GB / 189 GB avail

    2016-08-19 01:16:05.582505 mon.0 [INF] pgmap v60966: 64 pgs: 64 active+clean; 0 bytes data, 57416 MB used, 133 GB / 189 GB avail

    ….

    #sudo ceph health [detail] #ceph健康狀態查看,[詳情]

    HEALTH_OK

    • Ceph存儲空間查看

    #sudo ceph df

    GLOBAL:

    SIZE AVAIL RAW USED %RAW USED

    189G 133G 57411M 29.54

    POOLS:

    NAME ID USED %USED MAX AVAIL OBJECTS

    rbd 0 0 0 64203M 0

    OSD查看|增加|刪除

    備注:OSD數量大于>=2且位于不同的物理節點

    • 查看OSD狀態

    #sudo ceph osd tree

    ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY

    -1 0.13889 root default

    -2 0.04630 host ceph1

    0 0.04630 osd.0 up 1.00000 1.00000

    -3 0.04630 host ceph2

    1 0.04630 osd.1 up 1.00000 1.00000

    -4 0.04630 host ceph3

    2 0.04630 osd.2 up 1.00000 1.00000

    #ceph osd dump

    epoch 22

    fsid ee45dfa5-234d-48f3-a8a5-32e9ca781f47

    created 2016-09-21 14:05:24.512685

    modified 2016-09-22 15:14:54.317395

    flags

    pool 0 'rbd' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 1 flags hashpspool stripe_width 0

    max_osd 5

    osd.0 up in weight 1 up_from 11 up_thru 21 down_at 0 last_clean_interval [0,0) 192.168.11.112:6800/5903 192.168.11.112:6801/5903 192.168.11.112:6802/5903 192.168.11.112:6803/5903 exists,up 418cbbe0-ea7e-42d8-b43d-e48dd7e53a00

    osd.1 up in weight 1 up_from 10 up_thru 21 down_at 0 last_clean_interval [0,0) 192.168.11.134:6800/5639 192.168.11.134:6801/5639 192.168.11.134:6802/5639 192.168.11.134:6803/5639 exists,up f53ec139-9816-46a8-b7d5-41cb5dd57a0f

    osd.2 up in weight 1 up_from 11 up_thru 21 down_at 0 last_clean_interval [0,0) 192.168.11.135:6800/5659 192.168.11.135:6801/5659 192.168.11.135:6802/5659 192.168.11.135:6803/5659 exists,up 67ca0418-a495-45a7-914b-197dff732220

    osd.3 down out weight 0 up_from 0 up_thru 0 down_at 0 last_clean_interval [0,0) :/0 :/0 :/0 :/0 exists,new

    osd.4 down out weight 0 up_from 0 up_thru 0 down_at 0 last_clean_interval [0,0) :/0 :/0 :/0 :/0 exists,new

    • 列出磁盤

    #ceph-deploy disk list ceph1

    • 擦除磁盤:刪除磁盤的分區

    #ceph-deploy disk zap ceph1:sdb

    備注:此動作由于刪除分區表,會刪除所有數據,務必小心

    • 創建OSD

    #ceph-deploy osd prepare ceph1:sdb #準備OSD

    #ceph-deploy osd activate ceph1:sdb #激活OSD

    #ceph-deploy osd create ceph1:sdb #準備+激活=創建,1步到位

    • 移除OSD

    參考:

    http://docs.ceph.com/docs/hammer/rados/operations/add-or-rm-osds/#removing-osds-manual

    https://wiki.deimos.fr/Ceph_:_performance,_reliability_and_scalability_storage_solution#Add_an_OSD

    #sudo ceph osd out osd.{number}

    #sudo ceph osd down osd.{number} #停止進程,也可以登錄到節點停止該進程

    #sudo ceph osd crush remove osd.{number}

    #sudo ceph auth del osd. {number}

    #sudo ceph osd rm {number}

    #sudo rm -rf /var/lib/ceph/osd/ceph-{number} #登錄到所在節點執行

    Monitor增加|刪除|查看

    說明:Monitor數量要求>=2n+1 (n>=0,整數),生產環境至少3個

    • 移除Monitor

    #將ceph1這個monitor節點從~/my-cluster/ceph.conf刪除

    #cd ~/my-cluster/ && vi ceph.conf

    ……略

    mon_initial_members=ceph2, ceph3

    mon_host=192.168.100.111,192.168.100.112

    ……略

    #推送~/my-cluster/ceph.conf到各節點

    #ceph-deploy --overwrite-conf config push ceph1 ceph2 ceph3

    #刪除該monitor[可能要執行兩次],最后通過sudo ceph -s查看

    #ceph-deploy mon destroy ceph1

    • 添加Monitor

    #將ceph1這個monitor節點添加到~/my-cluster/ceph.conf

    #vi ~/my-cluster/ceph.conf

    ……略

    mon_initial_members=ceph1,ceph2, ceph3

    mon_host=192.168.100.110,192.168.100.111,192.168.100.112

    ……略

    #推送~/my-cluster/ceph.conf到各節點

    #ceph-deploy --overwrite-conf config push ceph1 ceph2 ceph3

    #增加monitor

    #ceph-deploy --overwrite-conf mon create ceph1

    • 查看Monitor

    #sudo ceph -s

    cluster 773b310b-5faf-4d98-8761-651ba7daecfb

    health HEALTH_OK

    monmap e8: 2 mons at {ceph2=192.168.100.115:6789/0,ceph3=192.168.100.126:6789/0}

    election epoch 42, quorum 0,1 ceph2,ceph3

    osdmap e76: 3 osds: 3 up, 3 in

    flags sortbitwise

    pgmap v30914: 136 pgs, 10 pools, 38194 kB data, 195 objects

    21925 MB used, 120 GB / 142 GB avail

    136 active+clean

    #當添加或刪除Monitor后,查看選舉狀態

    #ceph quorum_ status --format json-pretty

    MDS維護[暫不考慮]

    Pools & pg維護

    參考:

    http://docs.ceph.com/docs/hammer/rados/operations/pools/

    http://www.ithao123.cn/content-8246357.html (pg狀態說明)

    • 查看Pools

    #sudo ceph osd lspools #或sudo rados lspools #或sudo ceph osd pool ls

    rbd

    #rados df

    pool name KB objects clones degraded unfound rd rd KB wr wr KB

    rbd 0 0 0 0 0 0 0 0 0

    total used 58986376 0

    total avail 139998408

    total space 198984784

    • 創建Pools &查看pool的副本&查看pool的詳細信息

    #sudo ceph osd pool create images 100 #100指pg number

    pool 'images' created

    默認pool的pg number配置:

    http://docs.ceph.com/docs/hammer/rados/configuration/pool-pg-config-ref/

    #sudo ceph osd pool set images size 3 #設置pool:images的副本數為3

    set pool 1 size to 3

    #sudo ceph osd dump | grep 'replicated size' #查看所有pool的副本數

    #sudo ceph osd dump | grep ‘’${poolName}’ #查看pool的詳細情況’

    #sudo ceph osd pool set-quota images max_objects 10000 #設置quota:最大對象數

    set-quota max_objects=10000 for pool images

    • 刪除Pools

    #sudo ceph osd pool delete images images --yes-i-really-really-mean-it

    pool 'images' removed

    對象存儲

    • 創建對象

    #rados put test-object-1 a.txt --pool=data

    • 查看池子中的對象

    #rados -p data ls

    test-object-1

    #ceph osd map data test-object-1 #確定對象的位置

    osdmap e75 pool 'data' (2) object 'test-object-1' -> pg 2.74dc35e2 (2.62) -> up ([4,5], p4) acting ([4,5], p4)

    • 刪除對象

    #rados rm test-object-1 --pool=data

    • 對象網關(通過web方式訪問)

    √ 在任意ceph節點安裝對象網管

    #sudo yum install -y ceph-radosgw radosgw-agent

    √ 基本配置設置

    1. 創建keyring

    #sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring

    #sudo chmod +r /etc/ceph/ceph.client.radosgw.keyring

    1. 創建key

    #sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring \

    -n client.radosgw.gateway --gen-key

    1. Add capabilities to Key

    #sudo ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' \

    --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring

    1. Add the key to Ceph Storage Cluster

    #sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway \

    -i /etc/ceph/ceph.client.radosgw.keyring

    如果其他節點需要ceph.client.radosgw.keyring,可以推送到/etc/ceph目錄下

    1. Add gateway configuration to /etc/ceph/ceph.conf

    [client.radosgw.gateway]

    host=ceph1

    keyring=/etc/ceph/ceph.client.radosgw.keyring

    rgw socket path=/var/run/ceph/ceph.radosgw.gateway.fastcgi.sock

    log file=/var/log/radosgw/client.radosgw.gateway.log

    √ 啟動radosgw服務(默認監聽7480端口)

    #/usr/bin/radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway

    √ 創建用戶

    #sudo radosgw-admin user create --uid=ningyougang --display-name=ningyougang --email=ningyougang@navercorp.com

    √ S3客戶端測試

    http://www.cloudberrylab.com/free-amazon-s3-explorer-cloudfront-IAM.aspx

    到該地址下載S3客戶端,連接

    √ S3運維-radosgw,以下含相關運維命令

    請參考:

    http://docs.ceph.com/docs/master/radosgw/

    http://docs.ceph.com/docs/master/man/8/radosgw-admin/

    創建用戶

    #sudo radosgw-admin user create --uid=newtouchstep --display-name=newtouchstep --email=jingyi.liu@newtouch.cn

    修改用戶

    #sudo radosgw-admin user modify --uid=newtouchstep --display-name=newtouchstep --email=jingyi.liu@newtouch.cn

    查看用戶信息

    #sudo radosgw-admin user info --uid=newtouchone

    刪除用戶

    #sudo radosgw-admin user rm --uid=newtouchone #沒有數據才可以刪除

    #sudo radosgw-admin user rm --uid=newtouchone --purge-data #刪除用戶刪除數據

    暫停用戶使用

    #sudo radosgw-admin user suspend --uid=newtouchone

    用戶生效

    #sudo radosgw-admin user enable --uid=newtouchone

    用戶檢查

    #sudo radosgw-admin user check --uid=newtouchone

    查詢bucket

    #sudo radosgw-admin bucket list

    查詢指定bucket的對象

    #sudo radosgw-admin bucket list --bucket=images

    統計bucket信息

    #sudo radosgw-admin bucket stats #查詢所有bucket統計信息

    #sudo radosgw-admin bucket stats --bucket=images #查詢指定bucket統計信息

    刪除bucket

    刪除pucket(但是不刪除object,加上bucket后恢復)

    #sudo radosgw-admin bucket rm --bucket=images

    刪除bucket后同時刪除object

    #sudo radosgw-admin bucket rm --bucket=images --purge-objects

    檢查bucket

    #sudo radosgw-admin bucket check

    刪除object

    #sudo radosgw-admin object rm --bucket=attach --object=fanbingbing.jpg

    為bucket設置配額

    #sudo radosgw-admin quota set --max-objects=200 --max-size=10000000000 --quota-scope=bucket --bucket=images

    #sudo radosgw-admin quota enable --quota-scope=bucket --bucket=images

    #sudo radosgw-admin quota disable --quota-scope=bucket --bucket=images

    為帳號設置配額

    #sudo radosgw-admin quota set --max-objects=2 --max-size=100000 --quota-scope=user --uid=newtouchstep

    #sudo radosgw-admin quota enable --quota-scope=user --uid=newtouchstep

    #sudo radosgw-admin quota disable --quota-scope=user --uid=newtouchstep

    塊存儲

    參考:

    http://docs.ceph.com/docs/master/start/quick-rbd/

    http://docs.ceph.com/docs/jewel/man/8/rbd/

    經典截圖:

    • 創建rbd volume

    #sudo rbd create foo --size 1024 --pool swimmingpool --image-feature layering

    /dev/rbd0

    • 查看rbd volue列表 & 查看指定的某個rbd volume

    #sudo rbd ls --pool swimmingpool #塊設備列表查看,不指定pool,則默認為rbd

    #sudo rbd info foo --pool swimmingpool #查看指定的塊設備

    • Map rbd volume& 查看被映射的rbd volume

    #sudo rbd map foo --pool swimmingpool

    #sudo rbd showmapped

    id pool image snap device

    1 rbd foo - /dev/rbd1

    備注:上面的rbd create如果不加參數--image-feature layering,則sudo rbd map操作好像有問題:

    http://tracker.ceph.com/issues/15448

    http://www.zphj1987.com/2016/06/07/rbd%E6%97%A0%E6%B3%95map(rbd-feature-disable)/

    備注:在rbd map時,會報: rbd: map failed: (6) No such device or address

    此時可以在rbd create后加--image-feature layering參數即可解決

    #sudo rbd create foo --size 1024 --pool swimmingpool --image-feature layering

    /dev/rbd0

    • 格式化

    #sudo mkfs.ext4 /dev/rbd0

    • 掛載

    #sudo mount /dev/rbd0 /mnt

    #ls /mnt #證明被掛載目錄是一個分區

    Lost+found

    • umount目錄,unmap設備,刪除rbd

    #sudo unmount /mnt #先umount目錄

    #sudo rbd unmap /dev/rbd0

    #sudo rbd rm foo

    文件存儲(暫不考慮)

    推送配置文件 && 重啟服務

    參考:

    http://docs.ceph.com/docs/master/rados/operations/operating/

    • 推送配置文件到所有節點

    #推送配置,從目錄~/my-cluster/ceph.conf到各節點的/etc/ceph/ceph.conf

    #ceph-deploy --overwrite-conf config push ceph1 ceph2 ceph3

    • 啟動|停止|重啟所有服務(mon,osd,mds)

    #sudo systemctl start ceph.target

    #sudo systemctl stop ceph.target

    #sudo systemctl restart ceph.target

    • 啟動osd,mon,mds服務(停止和重啟省略)

    #sudo systemctl start ceph-osd.target

    #sudo systemctl start ceph-mon.target

    #sudo systemctl start ceph-mds.target

    • 啟動|停止|重啟單個節點上的某個ceph-osd服務

    #systemctl start ceph-osd@{id}

    #systemctl stop ceph-osd@{id}

    #systemctl restart ceph-osd@{id}

    環境清理至剛安裝ceph時

    備注:如果部署ceph失敗,不必刪除ceph,只需要在當前節點執行如下命令即可,即可將環境還原到剛安裝ceph的狀態

    • 采用ceph-deploy安裝,環境清理

    #umount /var/lib/ceph/osd/*

    #rm -rf /var/lib/ceph/osd/*

    #rm -rf /var/lib/ceph/mon/*

    #rm -rf /var/lib/ceph/mds/*

    #rm -rf /var/lib/ceph/bootstrap-mds/*

    #rm -rf /var/lib/ceph/bootstrap-osd/*

    #rm -rf /var/lib/ceph/bootstrap-mon/*

    #rm -rf /var/lib/ceph/tmp/*

    #rm -rf /etc/ceph/*

    #rm -rf /var/run/ceph/*

    或(上面命令的簡潔版)

    #umount /var/lib/ceph/osd/*

    #rm -rf /var/lib/ceph

    #rm -rf /etc/ceph/*

    #rm -rf /var/run/ceph/*

    • 采用kolla安裝,環境清理

    #刪除該節點的ceph相關容器,注意-f name參數,根據需要加入過濾條件

    #docker rm -f $(docker ps -f name=ceph -qa)

    #刪除配置文件

    #sudo rm -rf /home/irteam/kolla/*

    #[可選]如果是monitor節點,刪除ceph_mon, ceph_mon_config

    #docker volume rm ceph_mon ceph_mon_config

    #[可選]如果是osd節點,umount,刪除分區

    #sudo umount /var/lib/ceph/osd/*

    #sudo rm -rf /var/lib/ceph

    #sudo fdisk /dev/xvdb……,具體請參考磁盤操作章節的刪除分區章節

    #sudo parted /dev/xvdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1

    硬盤操作

    這里僅列出部分操作,還有更多操作請參考《硬盤操作.docx》

    • 磁盤查看

    #sudo fdisk -l

    Disk /dev/xvdb: 53.7 GB, 53687091200 bytes, 104857600 sectors

    Units=sectors of 1 * 512=512 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Disk label type: gpt

    # Start End Size Type Name

    1 10487808 104857566 45G unknown KOLLA_CEPH_DATA_1

    2 2048 10485760 5G unknown KOLLA_CEPH_DATA_1_J

    Disk /dev/xvda: 53.7 GB, 53687091200 bytes, 104857600 sectors

    Units=sectors of 1 * 512=512 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Disk label type: dos

    Disk identifier: 0x000602dc

    Device Boot Start End Blocks Id System

    /dev/xvda1 * 2048 1026047 512000 83 Linux

    /dev/xvda2 1026048 104857599 51915776 8e Linux LVM

    • 磁盤操作

    這里僅以刪除分區為例,具體請help

    #sudo fdisk /dev/xvdb

    WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

    Welcome to fdisk (util-linux 2.23.2).

    Changes will remain in memory only, until you decide to write them.

    Be careful before using the write command.

    Command (m for help): m

    Command action

    d delete a partition

    g create a new empty GPT partition table

    G create an IRIX (SGI) partition table

    l list known partition types

    m print this menu

    n add a new partition

    o create a new empty DOS partition table

    q quit without saving changes

    s create a new empty Sun disklabel

    w write table to disk and exit

    Command (m for help): d #d表示刪除

    Partition number (1,2, default 2): 2 #表示第2個分區

    Partition 2 is deleted

    Command (m for help): d

    Selected partition 1

    Partition 1 is delete

    Command (m for help): w #最后要保存

    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    Syncing disks.

    • 查看文件系統

    #sudo df -h

    任意節點能執行管理功能

    #首先保證該節點安裝ceph

    #yum makecache

    #yum install -y ceph

    #ceph --version #版本查看

    #將配置文件ceph.conf和ceph.client.admin.keyring推送到/etc/ceph/下

    #ceph-deploy admin {node-name}

    這樣你就可以使用root執行ceph的相關管理操作了

    Ceph注意事項/問題排查

    Raw drive禁用寫緩存

    # sudo hdparm -W 0 /dev/hda 0

    謹慎選擇文件系統

    開發,測試環境可以選用btrfs;

    生成環境選用xfs

    cephX認證系統

    官網: http://zhaozhiming.github.io/blog/2014/09/13/ceph-authentication-theory/

    中文翻譯: http://zhaozhiming.github.io/blog/2014/09/13/ceph-authentication-theory/

    升級時需先關閉認證

    http://docs.ceph.com/docs/master/rados/configuration/ceph-conf/

    跑Fetching Ceph keyrings報錯

    報錯信息:

    TASK: [ceph | Fetching Ceph keyrings] *****************************************

    …略

    template_from_string

    res=jinja2.utils.concat(rf)

    File "<template>", line 9, in root

    File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads

    return _default_decoder.decode(s)

    File "/usr/lib64/python2.7/json/decoder.py", line 365, in decode

    obj, end=self.raw_decode(s, idx=_w(s, 0).end())

    File "/usr/lib64/python2.7/json/decoder.py", line 383, in raw_decode

    raise ValueError("No JSON object could be decoded")

    ValueError: No JSON object could be decoded

    FATAL: all hosts have already failed -- aborting

    解決辦法:

    #將Monitor上的volume刪除掉

    #docker volume rm ceph_mon ceph_mon_config

    Monitor時鐘問題

    報錯信息:

    #ceph -s

    cluster f5a13a56-c9af-4f7b-9ba9-f55de577bafa

    health HEALTH_WARN

    clock skew detected on mon.192.168.100.134, mon.192.168.100.135

    Monitor clock skew detected

    monmap e1: 3 mons at {192.168.100.112=192.168.100.112:6789/0,192.168.100.134=192.168.100.134:6789/0,192.168.100.135=192.168.100.135:6789/0}

    election epoch 6, quorum 0,1,2 192.168.100.112,192.168.100.134,192.168.100.135

    osdmap e12: 5 osds: 5 up, 5 in

    pgmap v17: 64 pgs, 1 pools, 0 bytes data, 0 objects

    163 MB used, 224 GB / 224 GB avail

    64 active+clean

    解決辦法:

    在/etc/ceph/ceph.conf的[global]章節下,將同步時間參數調整:

    [global]

    mon_clock_drift_allowed=2 #兩分鐘誤差

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

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

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