顯示具有 Cloud::OpenStack 標籤的文章。 顯示所有文章
顯示具有 Cloud::OpenStack 標籤的文章。 顯示所有文章

2018年1月31日 星期三

在 CentOS/RHEL 7 上,新增 OpenStack Cinder 儲存節點

學習目標:
  • 在 OpenStack 平台上,增加 Cinder 儲存節點!
  • 本次範例假設 OpenStack 平台上,己經有架設好的 Control 節點!
操作流程:
  1. 在 Cinder 節點主機上,架設好 LVM 儲存空間!
  2. 在 Cinder 節點主機上,安裝必要的套件:
    # yum install openstack-cinder targetcli python-keystone
    
  3. 在 Cinder 節點主機上,修改設定檔內容:
    # cd /etc/cinder
    # vim cinder.conf
    (修改下列設定,其他設定保持不變...)
    [DEFAULT]
    my_ip = 192.168.100.3  (本 Cinder 節點主機想要提供 Cinder 服務的 IP 位置)
    glance_api_servers = http://192.168.100.1:9292 (提供 glance API 連到該 Cinder 的主機清單列表)
    enable_v3_api=True
    storage_availability_zone=nova
    default_availability_zone=nova
    default_volume_type=iscsi
    auth_strategy=keystone
    enabled_backends=lvm-op3 (名稱很重要,請一下需要對應LVM名稱)
    nova_catalog_info=compute:nova:publicURL
    nova_catalog_admin_info=compute:nova:adminURL
    osapi_volume_listen=0.0.0.0
    osapi_volume_workers=32
    iscsi_protocol = iscsi
    debug=False
    log_dir=/var/log/cinder
    transport_url=rabbit://guest:guest@192.168.100.1:5672/
    control_exchange=openstack
    api_paste_config=/etc/cinder/api-paste.ini
    glance_host=192.168.100.1
    [backend]
    [backend_defaults]
    [barbican]
    [brcd_fabric_example]
    [cisco_fabric_example]
    [coordination]
    [cors]
    [database]
    connection=mysql+pymysql://cinder:0d9082d5643849e4@192.168.100.1/cinder
    [fc-zone-manager]
    [healthcheck]
    [key_manager]
    [keystone_authtoken]
    auth_uri=http://192.168.100.1:5000/
    auth_type=password
    auth_url=http://192.168.100.1:35357
    username=cinder
    password=HelloWorld
    project_name=services
    [matchmaker_redis]
    [nova]
    [oslo_concurrency]
    lock_path=/var/lib/cinder/tmp
    [oslo_messaging_amqp]
    [oslo_messaging_kafka]
    [oslo_messaging_notifications]
    driver=messagingv2
    [oslo_messaging_rabbit]
    ssl=False
    [oslo_messaging_zmq]
    [oslo_middleware]
    [oslo_policy]
    policy_file=/etc/cinder/policy.json
    [oslo_reports]
    [oslo_versionedobjects]
    [profiler]
    [ssl]
    [lvm-op3]
    volume_backend_name=lvm
    volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
    iscsi_ip_address=192.168.100.5
    iscsi_helper=lioadm
    volume_group=data
    volumes_dir=/var/lib/cinder/volumes
    
  4. 在 Cinder 節點主機上,新增一下記錄檔:
    # touch /var/log/cinder/volume.log
    # chown root.cinder /var/log/cinder/volume.log
    # chmod g+w /var/log/cinder/volume.log
    # restorecon -R /etc/cinder
    # restorecon -R /var/log/cinder
    
  5. 在 Cinder 節點主機上,啟動 Cinder Volume 服務:
    # systemctl enable openstack-cinder-volume.service target.service
    # systemctl start openstack-cinder-volume.service target.service
    
  6. 在 Control 節點主機上,查詢 Cinder 服務:
    (keystone_admin)]# cinder service-list
    

參考範例:
  • https://docs.openstack.org/mitaka/install-guide-rdo/cinder-storage-install.html

2018年1月14日 星期日

在 CentOS/RHEL 7 上安裝 OpenStack 套件

學習目標:
  • 在多節點的硬體平台基礎上,安裝 OpenStack 套件!
  • 本次範例以三個節點為示範!
操作流程:
  1. 三部主機同時安裝相關的套件:
    # yum update
    # reboot
    
  2. 三部主機可暫時停用防火牆:
    # systemctl disable firewalld 
    # systemctl stop firewalld (重開機後,會自動啟動!需要時,仍需要關上!)
    
  3. 三部主機同時設定 chronyd:
    # yum install chrony
    # vim /etc/chrony.conf
    server time.stdtime.gov.tw iburst
    
    # systemctl enable chronyd.service
    # systemctl restart chronyd.service
    
  4. 三部主機上,停用 NetworkManger 套件,並同時啟用 network 套件:
    # systemctl stop NetworkManager
    # systemctl disable NetworkManager
    # systemctl enable network
    # hostnamectl set-hostname control.example.com (每部均不相同!)
    # reboot
    
  5. 在 Control Node 上,設定連線用的 ssh key:
    # ssh-keygen
    # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.2
    # ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.3
    # ssh network
    
  6. 在 Control Node 上,修改 /etc/hosts 檔案:
    # vim /etc/hosts
    (其他省略...)
    192.168.1.1 control control.example.com
    192.168.1.2 network network.example.com
    192.168.1.3 compute1 compute1.example.com
    
  7. 在 Control Node 上,將 /etc/hosts 檔案送至另兩部主機上:
    # scp /etc/hosts root@192.168.1.2:/etc/
    # scp /etc/hosts root@192.168.1.3:/etc/
    
  8. 在三部主機上,安裝 OpenStack Pike 倉儲套件:
    # yum install centos-release-openstack-pike
    # yum upgrade
    # reboot
    # yum install python-openstackclient
    # yum install openstack-selinux
    
  9. 在 Control Node 上,安裝 PackStack 套件,用來協助安裝、設定 OpenStack:
    # yum install openstack-packstack
    
  10. 在 Control Node 上,產生 answer.txt 檔案,並且編修內容:
    # packstack --gen-answer-file=/root/answer.txt
    # vim /root/answer.txt
    (部份省略,只顯示必須修改的要項...)
    CONFIG_DEFAULT_PASSWORD=a123456
    CONFIG_CEILOMETER_INSTALL=y
    CONFIG_NTP_SERVERS=tick.stdtime.gov.tw
    CONFIG_CONTROLLER_HOST=192.168.1.1
    CONFIG_COMPUTE_HOSTS=192.168.1.3
    CONFIG_NETWORK_HOSTS=192.168.1.2
    CONFIG_PROVISION_DEMO=n
    CONFIG_KEYSTONE_ADMIN_PW=a123456
    CONFIG_HEAT_INSTALL=y
    CONFIG_CINDER_VOLUMES_CREATE=y
    CONFIG_LBAAS_INSTALL=y
    CONFIG_CINDER_VOLUME_NAME=data
    CONFIG_NEUTRON_METERING_AGENT_INSTALL=y
    CONFIG_NEUTRON_FWAAS=y
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan
    CONFIG_NEUTRON_ML2_VLAN_RANGES=physnet1:1:1000
    CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-eth1
    CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-eth1:eth1
    CONFIG_HEAT_CFN_INSTALL=y
    CONFIG_HORIZON_SSL=y
    CONFIG_SWIFT_INSTALL=n
    
  11. 在 Control Node 上,執行安裝 OpenStack 套件:
    # packstack --answer-file=/root/answer.txt
    

參考文獻:
  • http://www.techsupportpk.com/2016/12/installing-openstack-on-multi-node-in-linux.html
  • https://www.linuxtechi.com/multiple-node-openstack-liberty-installation-on-centos-7-x/
  • https://www.linuxtechi.com/multinode-openstack-newton-installation-centos7/

2017年8月24日 星期四

在 CentOS / RHEL 7 上架設 oVirt (RHEV-M) 服務

學習目標:
  • 安裝 oVirt 套件,以利管理虚擬機!
  • oVirt 套件,類似 RHEVM 管理套件,無授權使用問題!
操作流程:
  1. 安裝 oVirt 的 repository 套件:
    # yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm
    
  2. 安裝 dnf 的 相闗套件:
    # yum install dnf
    
  3. 安裝 oVirt 的套件:
    # dnf install -y ovirt-engine
    
  4. 安裝與設定 PostgreSQL 套件:
    # yum install postgresql postgresql-server postgresql-contrib
    # postgresql-setup initdb
    # vim /var/lib/pgsql/data/pg_hba.conf
    host    all             all             127.0.0.1/32            md5
    host    all             all             ::1/128                 md5
    
    # vim /var/lib/pgsql/data/postgresql.conf
    autovacuum_vacuum_scale_factor = 0.01  
    autovacuum_analyze_scale_factor = 0.075  
    autovacuum_max_workers = 6  
    maintenance_work_mem = 65536  
    max_connections = 150  
    lc_messages = 'en_US.UTF-8'
    
    # systemctl start postgresql
    # systemctl enable postgresql
    # firewall-cmd --permanent --add-service=postgresql
    # firewall-cmd --reload
    # psql -h 127.0.0.1 -U postgres -W
    postgres=# create database ovirt;
    
  5. 安裝設定 oVirt Engine :
    # engine-setup
    
  6. 按照出現的訊息,逐一安裝系統設定值 !
  7. 打開瀏覽器,連線到 oVirt 的管理網頁:
    # firefox https://www.example.com:443/ovirt-engine
    (登入的帳密 admin/你自己設定的密碼 )
    
  • http://www.ovirt.org/download/

2016年11月21日 星期一

在 CentOS7/RHEL7 上,使用快照分層化(Snapshot layering)快速建立影像檔案!

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
  • Ceph Block 的使用,請參考這一篇
  • 管理 RBD 快照的方式,請參考這一篇
快速設定流程:
  1. 在 ServerC 上建立一個 128MB 的 RDB 映像檔:(--image-format 2 是啟動分層功能的方式!)
    [root@serverc ~]#rbd create test-clone --image-format 2 --size 128
    
  2. 在 ServerB 上建立一個指標,指到上一步驟所建立的 RDB 映像檔:
    [root@serverb ~]# rbd --id rbd.serverb map test-clone
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    id pool image      snap device    
    0  rbd  test-clone -    /dev/rbd0 
    
  3. 在 ServerB 上,針對 RDB 映像檔,建立檔案系統,並且掛載到 /mnt/clones 目錄下:
    [root@serverb ~]#mkfs.ext4 /dev/rbd0
    [root@serverb ~]#mkdir /mnt/clones
    [root@serverb ~]#mount /dev/rbd0 /mnt/clones
    
  4. 在 ServerB 上,新增一個 10MB 的檔案到 /mnt/clones 目錄下:
    [root@serverb ~]#dd if=/dev/zero of=/mnt/clones/file-1 bs=1M count=10
    
  5. 在 ServerC 上,新增一個新的 snapshot:
    [root@serverc ~]#rbd snap create --snap my-snapshot test-clone
    
  6. 在 ServerC 上,建立一個 my-snapshot 複本在 test-clone 內,名為 my-clone:
    [root@serverc ~]#rbd clone --image test-clone --snap my-snapshot --dest my-clone
    
  7. 在 ServerC 上,確認 my-clone 有完整被建立起來:
    [root@serverc ~]#rbd children --image test-clone --snap my-snapshot
    
  8. 在 ServerC 上,扁平化 my-clone 影像檔:
    [root@serverc ~]#rbd flatten --image my-clone
    
  9. 在 ServerB 上建立一個指標,指到新建立的 my-clone 映像檔:
    [root@serverb ~]#rbd --id rbd.serverb map my-clone
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    
  10. 在 ServerB 上,缷載 /mnt/clones 目錄:
    [root@serverb ~]#umount /mnt/clones
    
  11. 在 ServerB 上,掛載新的 RBD 檔到 /mnt/clones 目錄:
    [root@serverb ~]#mount /dev/rbd1 /mnt/clones
    
  12. 在 ServerB 上,查詢 /mnt/clones 目錄,是否有 file-1 檔案:
    [root@serverb ~]#ls /mnt/clones
    

2016年11月17日 星期四

在 CentOS7/RHEL7 上,管理 RBD 快照檔案!

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
  • Ceph Block 的使用,請參考這一篇
快速設定流程:
  1. 在 ServerC 上建立一個 128MB 的 RDB 映像檔:
    [root@serverc ~]# rbd create test-snapshot --size 128
    
  2. 在 ServerB 上建立一個指標,指到上一步驟所建立的 RDB 映像檔:
    [root@serverb ~]# rbd --id rbd.serverb map test-snapshot
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    id pool image         snap device    
    0  rbd  test-snapshot -    /dev/rbd0 
    
    
  3. 在 ServerB 上,將 RDB 映像檔格式化成 ext4 檔案系統:
    [root@serverb ~]# mkfs.ext4 /dev/rbd0
    
  4. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mkdir /mnt/snapshots
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    
  5. 在 ServerB 上,利用 df 指令來查看檔案系統:
    [root@serverb ~]# df -h
    
  6. 利用 dd 指令,在 snapshots 目錄內,建一個 10MB 的檔案:
    [root@serverb ~]# dd if=/dev/zero of=/mnt/snapshots/file-1 bs=1M count=10
    
  7. 在 ServerC 上建立一個 RDB 快照檔案,指向 RDB 映像檔:
    [root@serverc ~]# rbd snap create --snap my-snapshot test-snapshot
    
  8. 在 ServerB 上,利用 dd 指令,在 snapshots 目錄內,建另一個 10MB 的檔案:
    [root@serverb ~]# dd if=/dev/zero of=/mnt/snapshots/file-2 bs=1M count=10
    [root@serverb ~]#ls /mnt/snapshots
    
  9. 在 ServerC 上建立另一個 RDB 快照檔案,指向 RDB 映像檔:
    [root@serverc ~]# rbd snap create --snap another-snap test-snapshot
    
  10. 在 ServerB 上,缷載 /mnt/snapshots 目錄:
    [root@serverb ~]#umount /mnt/snapshots
    
  11. 在 ServerC 上,列出所有建立的 RDB 快照檔案:
    [root@serverc ~]# rbd --id rbd.serverb snap ls test-snapshot
    
  12. 在 ServerC 上,返回到第一個 RDB 快照, my-snapshot:
    [root@serverc ~]# rbd snap rollback --snap my-snapshot test-snapshot
    
  13. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    [root@serverb ~]#ls /mnt/snapshots
    
  14. 在 ServerB 上,缷載 /mnt/snapshots 目錄:
    [root@serverb ~]#umount /mnt/snapshots
    
  15. 在 ServerC 上,返回到第二個 RDB 快照, another-snapshot:
    [root@serverc ~]# rbd snap rollback --snap another-snap test-snapshot
    
  16. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    [root@serverb ~]#ls /mnt/snapshots
    

2016年10月25日 星期二

在 CentOS7/RHEL7 上,使用 Ceph Block 設備(RBD)

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
快速設定流程:
  1. 切換到建立 Ceph 時的目錄:
    #cd ~/ceph-deploy
    
  2. 編輯 Ceph 設定檔:
    #vim ceph.conf
    (在檔尾追加下列設定:)
    [client]
    rbd_cache = true
    rbd_cache_writethrough_until_flush = true
    
  3. 重新配置 Ceph :
    #ceph-deploy --overwrite-conf config push serverd servere
    
  4. 為 RBD 客戶端建立憑證:
    #ceph auth get-or-create client.rbd.serverb osd 'allow rwx pool=rbd' mon 'allow r' -o /etc/ceph/ceph.client.rbd.serverb.keyring
    
    (上述指令若輸入錯誤,請先刪除,再重新輸入:)
    ceph auth del client.rbd.serverb
    
  5. 建立一個 RBD 影像檔:
    #rbd create test --size 128
    
  6. 確認剛才建立的 RBD 影像檔:
    #rbd info test
    
  7. 切換至 Serverb 主機,安裝 Ceph 指令工具:
    #yum install -y ceph-common
    
  8. 在 Serverb 主機上,啟動 RBD Map 服務:
    #chkconfig rbdmap on
    #systemctl start rbdmap
    
  9. 在 Serverb 主機,導入 RBD 核心驅動工具:
    #modprobe rbd
    #lsmod | grep rbd
    
  10. 將 ServerC 上的 keyring 與 ceph.conf 檔,複製到 Serverb 主機:
    #scp root@serverc:/etc/ceph/ceph.client.rbd.serverb.keyring /etc/ceph/
    #scp root@serverc:/etc/ceph/ceph.conf /etc/ceph/
    
  11. 在 Serverb 主機上,繪製 RBD 影像檔:
    #rbd --id rbd.serverb map test
    
  12. 在 Serverb 主機上,驗證 RBD 影像檔:
    #rbd --id rbd.serverb showmapped
    
  13. 在 Serverb 主機上,將 RBD 影像檔,製成檔案系統:
    #mkfs.ext4 /dev/rbd0
    #mkdir /mnt/rbd
    #mount /dev/rbd0 /mnt/rbd
    
    (亦可寫入 /etc/fstab 檔案內:)
    /dev/rbd0  /mnt/rbd  ext4 defaults,_netdev 0 0
    
  14. 測試一下效能:
    #dd if=/dev/zero of=/tmp/test1 bs=10M count=1
    #df
    #cp /tmp/test1 /mnt/rbd
    #ls /mnt/rbd/
    #rados --id rbd.serverb df
    #dd if=/dev/zero of=/tmp/test2 bs=10M count=1
    #cp /tmp/test2 /mnt/rbd
    #df
    #rados --id rbd.serverb df
    
  15. 在 Serverb 主機上,利用 rbd put 指令,上傳物件到 RADOS :
    #dd if=/dev/zero of=/tmp/test3 bs=10M count=1
    #rados --id rbd.serverb -p rbd put test3 /mnt/test3
    #rados --id rbd.serverb df
    #rados --id rbd.serverb -p rbd stat test3
    
    (以下是不允許的狀況:)
    #rados --id rbd.serverb -p data put test1 /tmp/test1
    

2016年10月21日 星期五

在 CentOS7/RHEL7 上,安裝 Ceph Storage 系統

設定提要:
  • 使用 Ceph Hammer 套件來架設!
  • 先暫停 firewalld 服務,以利架設過程!
快速設定流程:
  1. 利用 yum 進行相關套件安裝:
    #yum -y install centos-release-ceph-hammer
    #yum -y install ceph-deploy
    
  2. 建立 Ceph 設定目錄:
    #mkdir ~/ceph-deploy
    
  3. 建立 Ceph 安裝設定檔:
    #cd ~/ceph-deploy
    #ceph-deploy new serverc serverd servere
    
    (若無架設 DNS Server,請預先在 /etc/hosts 建立相關主機設定,並複至到其他主機)
    192.168.0.1 serverc serverc.example.com
    192.168.0.2 serverd serverd.example.com
    192.168.0.3 servere servere.example.com
    
    
  4. 建立 ssh key ,並複製到其他主機:
    #ssh-keygen -t rsa
    #ssh-copy-id root@serverd
    #ssh-copy-id root@servere
    
  5. 修改 Ceph 安裝設定檔:
    #cd ~/ceph-deploy
    #vim ceph.conf
    (增加下列設定:)
    osd journal size = 1024
    osd pool default size = 2
    osd pool default min size = 1
    public network = 192.168.0.0/24
    [mon]
    mon osd allow primary affinity = 1
    
  6. 安裝 Ceph 至各主機上:
    #ceph-deploy install serverc serverd servere
    
  7. 在 ServerC 上,安裝 Ceph 監視器,監視各主機運作:
    #ceph-deploy mon create serverc serverd servere
    
  8. 在 ServerC 上,收集 Ceph 監視器金鑰:
    #ceph-deploy gatherkeys serverc
    
  9. 在 ServerC 上,查詢 Ceph Cluster 狀態:
    #ceph -s
    
  10. 在 ServerC 上,查詢 ServerC 的硬碟空間狀態:
    #ceph-deploy disk list serverc
    
  11. 使用各 Server 上的 vdb 的硬碟空間:
    #cd ~/ceph-deploy
    #ceph-deploy osd create serverc:vdb serverd:vdb servere:vdb
    
    (做完後,記得要重開機!)
    
  12. 在 ServerC 上,再次查詢 Ceph Cluster 狀態:
    #ceph -s
    
  13. 在 ServerC 上,查詢 Ceph Cluster 狀態的方式:
    #ceph -w
    #service ceph status mon
    #service ceph status osd
    #ps -ef | grep ceph-osd
    #service ceph stop osd
    #ceph osd tree
    #service ceph start osd
    #ceph osd tree
    
  14. 如果修改了 ceph-deploy 下的 ceph.conf 檔案,可重新再配置 ceph :
    #vim ~/ceph-deploy/ceph.conf
    (加入下列幾行:)
    [mon]
    mon_clock_drift_allowed = 1
    mon_clock_drift_warn_backoff = 30
    
    (開啟重新配置)
    #ceph-deploy --overwrite-conf config push serverc serverd servere
    #service ceph restart mon
    #ssh serverd "service ceph restart mon"
    #ssh servere "service ceph restart mon"
    

RADOS 驗證:
  1. 在 ServerC 上,建立一個小檔案,並上載到 RADOS server:
    #dd if=/dev/zero of=/tmp/test bs=10M count=1
    #rados mkpool data
    #rados -p data put test1 /tmp/test
    #rados df
    
    (再多推一些東西上去:)
    #rados -p data put test2 /tmp/test
    #rados -p data put test3 /tmp/test
    #rados df
    
  2. 刪除 RADOS server 內的資料:
    #rados -p data rm test1
    #rados -p data rm test2
    #rados -p data rm test3
    

CephX 的驗證機制:
  1. 在 ServerC 上,使用 Ceph 的監看模式,查看CephX上的ID與金鑰:
    #ceph --id admin --keyring /etc/ceph/ceph.client.admin/keyring -w
    
  2. 使用 rbd 指令,建立一個影像檔:
    #rbd --id admin --keyring /etc/ceph/ceph.client.admin.keyring create --size 1024 testimg
    
  3. 使用 rbd 指令,移除先前建立一個影像檔:
    #rbd --id admin --keyring /etc/ceph/ceph.client.admin.keyring rm testimg
    
  4. 可以利用 Shell 指令,指定一部份的 rbd 指令:
    #CEPH_ARGS='--id user --keyring /etc/ceph/ceph.client.user.keyring'
    
  5. 增加一個使用者 rhuser 到 Ceph 內:
    ceph auth get-or-create client.rhuser mds 'allow' osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.rhuser.keyring
    
  6. 查詢使用者相關資料與權限:
    #ceph auth list
    
  7. 修訂使用者 rhuser 相關資料與權限:
    #ceph --id admin --keyring /etc/ceph/ceph.client.admin.keyring auth caps client.rhuser osd 'allow * pool=data' mon 'allow *'
    

2016年6月6日 星期一

RHEL7上的 OpenStack (十三)--善用 Ceph Storage 服務(二)

Ceph 佈署與設定:
設定目標:

快速佈署流程:
  1. 利用 yum 安裝
    #yum -y install ceph-deploy
    

參考文獻:

  1. http://www.server-world.info/en/note?os=CentOS_7&p=ceph
  2. http://linoxide.com/storage/setup-red-hat-ceph-storage-centos-7-0/
  3. http://ilkerdagli.info/?p=40

RHEL7上的 OpenStack (十三)--善用 Ceph Storage 服務(一)

Ceph 簡介:
  • Ceph 存取方法圖:


  • Ceph 被設計成可彈性調整的儲存系統,可應付不同需求的儲存方式!
  • Ceph 架構包含下列幾個架構:
    • Master server:
    • Nodes:
    • Front end server:
  1. 利用 yum 安裝
    #yum install 
    

參考文獻:

  1. https://wiki.centos.org/HowTos/PXE

2016年5月29日 星期日

在 CentOS7/RHEL7 上架設 OpenStack Server

設定目標:
  • 在 Centos 7 上安裝 OpenStack Mitaka 版本套件!
  • 安裝 OpenStack 基本 Nova、Glance、Nuetron元件套件!
  • 安裝 OpenStack 基本 RabbitMQ 套件,提供 keystone 服務!
OpenStack Mitaka 安裝流程:
  1. 設定 yum 的 repo 檔案:
    #vim /etc/yum.repos.d/CentOS-OpenStack.repo
    [OpenStack]
    name= CentOS 7 OpenStack Mitaka
    baseurl=ftp://ftp.stu.edu.tw/Linux/CentOS/7.2.1511/cloud/x86_64/openstack-mitaka/
    enabled=1
    gpgcheck=0
    
  2. 安裝 openstack-packstack 套件:
    # yum -y install openstack-packstack
    
  3. 停止使用 Network Manager 套件:
    #systemctl disable NetworkManager
    #systemctl stop NetworkManager
    #systemctl enable network
    #systemctl start network
    
  4. 產生 answer-file ,方便以後的設定:
    # packstack --gen-answer-file /root/answer.txt
    CONFIG_DEFAULT_PASSWORD=secret
    CONFIG_SWIFT_INSTALL=n
    CONFIG_HEAT_INSTALL=y
    CONFIG_NTP_SERVERS=211.22.103.158
    CONFIG_KEYSTONE_ADMIN_PW=secret
    CONFIG_CINDER_VOLUMES_CREATE=y
    CONFIG_LBAAS_INSTALL=y
    CONFIG_NEUTRON_FWAAS=y
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan
    CONFIG_NEUTRON_ML2_VLAN_RANGES=physnet1:1:1000
    CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-eth1
    CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-eth1:enp0s3
    CONFIG_HORIZON_SSL=y
    CONFIG_PROVISION_DEMO=n
    
  5. 執行 OpenStack 套件安裝:
    # packstack --answer-file /root/answer.txt
    
    ※若發生 DB 編輯錯誤:
    1. 移除 Mariadb Database 套件:
      # yum -y erase mariadb-*
      
    2. 重新安裝 Mariadb Database Server 套件:
      # yum -y erase mariadb-server
      

參考文獻:
  1. https://www.gitbook.com/book/kairen/openstack-centos/details
  2. https://kairen.gitbooks.io/openstack-centos/content/conceptions/index.html

2016年1月9日 星期六

OpenStack 線上相關資源

https://kairen.gitbooks.io/openstack/content/openstack_introduction.html

https://www.gitbook.com/book/kairen/openstack/details


http://docs.openstack.org/openstack-ops/content/

2015年12月11日 星期五

RHEL 的 OpenStack (十二)--管理 Heat Orchestration 服務

Heat Orchestration 服務

Heat Orchestration 服務是為了 OpenStack 雲,提供一種基於樣板的編制工程方式,用於建立、管理雲端架構資源!
Hear Orchestration 服務,由下列幾項元件組成:
  • heat-cfn
  • heat-api
  • heat-api-cfn
  • heat-engine
  • heat-api-cloudwatch
  • heat-cfntools 以及 cloud-init 套件
練習1:
  1. # source /root/keystonerc_admin
  2. # yum list openstack-heat* python-heatclient heat-cfntools
  3. # grep 10.1.1.1 /etc/heat/heat.conf
  4. # keystone user-get heat
  5. # keystone service-get heat
  6. # keystone catalog --service orchestration
  7. # keystone user-get heat-cfn
  8. # keystone service-get heat-cfn
  9. # keystone catalog --service cloudformation
  10. # keystone user-role-list --user heat --tenant services
  11. # openstack-service status heat

設定Heat Orchestration 服務

設定檔包含項目:
  • 建立預設的 Nova 浮動IP池,Heat 將會從這個池分配浮動IP
  • 指定預設的浮動IP池
  • 設定 DNS 轉址
  • 建立各式 Nova 樣板,管理員可以用於 Heat 樣板中
  • 建立 Heat 可用的 Keystone 使用者
練習2:
  1. # source /root/keystonerc_admin
  2. # nova floating-ip-pool-list
  3. # crudini --get /etc/nova/nova.conf DEFAULT default_floating_pool
  4. # crudini --set /etc/nova/nova.conf DEFAULT default_floating_pool public
  5. # openstack-service restart nova
  6. # crudini --set /etc/neutron/dhcp_agent.ini DEFAULT dnsmasq_dns_servers 10.1.1.254
  7. # openstack-service restart neutron --> 另一部主機也需要做
  8. # nova flavor-create web.tiny auto 1024 20 1
  9. # keystone tenant-create --name heatproject
  10. # keystone user-create --name heatuser --pass redhat
  11. # keystone user-role-add --user heatuser --role _member_ --tenant heatproject
  12. # keystone user-role-add --user heatuser --tenant heatproject --role heat_stack_owner
  13. # vim /root/keystonerc_heatuser
  14. # source /root/keystonerc_heatuser
  15. # glance image-list
  16. # neutron net-list
  17. # neutron net-create net1
  18. # neutron subnet-create --name subnet1 net1 192.168.0.0/24
  19. # neutron router-create router1
  20. # neutron router-gateway-set router1 public
  21. # neutron router-interface-add router1
  22. # nova keypair-add --pub-key /root/.ssh/id_rsa.pub heatkey
  23. # nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
  24. # nova secgroup-add-rule default tcp 80 80 0.0.0.0/0
  25. # nova secgroup-add-rule default tcp 443 443 0.0.0.0/0
  26. # nova secgroup-add-rule default tcp 3306 3306 0.0.0.0/0
  27. # nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

啟動與驗證 Stack

太複雜,先跳過...
練習3:
  1. 先編好一個檔案:multi.template
  2. # source /root/keystonerc_heatuser
  3. # neutron subnet-list
  4. # neutron net-list
  5. # vim /root/env.yaml
    parameters:
    key_name: heatkey
    public_net_id: <上一項指令的ID>
    private_net_id: <上一項指令的ID>
    private_subnet_id: <上兩項指令的ID>
  6. # heat stack-create -r -f multi.tempate -e /root/env.yaml multi
  7. # heat stack-list
  8. 在一部主機上 # virsh list
  9. # heat stack-show multi
  10. # heat event-list multi
  11. # nova list
  12. # ssh root@10.1.1.10
  13. # ssh ec2-user@10.1.1.10
  14. $ su - 
  15. # systemctl status httpd.service
  16. # exit
  17. $ exit
  18. # ssh ec2-user@10.1.1.11
  19. $ sudo systemctl status mariadb.service
  20. $ exit
  21. 移除 Stack
    • # heat stack-delete multi
除錯
練習4:

RHEL 的 OpenStack (十一)--管理 Ceilometer 遙測技術服務

Ceilometer 的作用
提供 API 以及客戶端指令,去收集系統上的資料,用於客戶帳單、系統監視或是警告!

遙測技術(telemetry)服務由下列幾個元件組成:
  • ceilometer-agent-compute : 運作於每一個計算節點上,做資源使用的統計調查
  • ceilometer-agent-central : 運作於中央管理主機上,做非計算節點或實體的資源統計資料調查!
  • ceilometer-collector : 運作於一個或多個中央管理主機上,監控訊息佇列!通知訊息將會被處理成遙測技術訊息,並且被儲存起來!
  • Mongo database : 收集儲存樣品資料
  • API Server: 運作於一個或多個中央管理主機,用來提供存取已收集的資料!

Ceilometer 的基本觀念
Ceilometer 與監測不同的地方
已加入 Ceilometer 的 OpenStack 元件
  • Nova
  • Neutron
  • Glance
  • Cinder
  • Swift
Ceilometer 使用的量表類型:
  • 累積式(Cumulative)
  • 標準式(Gauge):用於浮動式IP、影像上傳、硬碟I/O等
  • 時變式(Delta)
練習1:
  1. # source /root/keystonerc_admin
  2. # yum list installed "ceilometer" mongodb-server mongodb
  3. # cat /etc/mongodb.conf
  4. # systemctl status mongod
  5. # grep 10.1.1.1 /etc/ceilometer/ceilometer.conf
  6. # keystone user-get ceilometer
  7. # keystone tenant-get services
  8. # keystone service-get ceilometer
  9. # keystone catalog --service metering
  10. # keystone user-role-list --user ceilometer --tenant services
  11. # openstack-service restart ceilometer
  12. # systemctl status openstack-ceilometer-alarm-evaluator.service
  13. # systemctl status openstack-ceilometer-alarm-notifier.service
  14. # systemctl status openstack-ceilometer-api.service
  15. # systemctl status openstack-ceilometer-central.service
  16. # systemctl status openstack-ceilometer-collector.service
  17. # systemctl status openstack-ceilometer-compute.service
  18. # systemctl status openstack-ceilometer-notification.service
由Ceilometer 遙測服務收集資料
ceilometer 指令來自於 python-ceilometerclient RPM套件!
常用指令:
  • ceilometer meter-list
  • ceilometer sample-list -m image
  • ceilometer statistics -m image
練習2:
  1. # source /root/keystonerc_admin
  2. # glance image-create --name ceilometertest --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/small.img
  3. # ceilometer meter-list
  4. # ceilometer meter-list | grep image
  5. # ceilometer sample-list -m image
  6. # ceilometer alarm-threshold-create --name monitor-image --description 'monitor image' --meter-name image.update --threshold 1 --comparison-operator ge --statistic count --period 60 --evaluation-period 1 --alarm-action 'log://'
  7. # ceilometer alarm-list
  8. # glance image-update --name ceilometer ceilometertest
  9. # sleep 1m && ceilometer alarm-list
  10. # ceilometer alarm-history <上項指出現的ID值>
除錯
練習3:

RHEL 的 OpenStack (十)--管理 Nova 計算節點

移除 Nova 計算節點
移除 Nova 計算節點
  • 在已經執行 nova-compute 服務的機器上,取消計算服務!
  • 可以利用 nova service-disable 達成目的
  • # nova service-disable --reason "Down for maintenance" demo.example.com nova-compute
練習1:
  1. # source /root/keystonerc_admin
  2. # nova list --all-tenants
  3. # nova delete <上項指令列出的VM-ID>
  4. # nova service-list
  5. # nova service-disable --reason "Maintenance"  另一部主機名稱  nova-compute
  6. # nova service-list
  7. # nova service-delete 6
  8. # nova service-list
  9. 另一部主機重開機
  10. # nova service-list --> 發現另一部主機照樣回來了!!
  11. # nova service-disable --reason "Maintenance"  另一部主機名稱  nova-compute
  12. 另一部主機重開機
  13. # nova service-list

新增 Nova 計算節點

擴展 OpenStack 第一步,即是新增 Nova 計算節點!
  • OpenStack 所有服務均可反中央集中管理!
  • 計算節點利用 hypervisor 管理實體
安裝計算節點:
  1. 安裝 openstack-nova-compute 套件
  2. 由其他控制節點或是計算節點,複製一份 /etc/nova/nova.conf 檔案
  3. 利用指令 nova host-list 或 nova service-list 來檢視新增的結果!
  4. 若想要取消,請參考上一節說明!
練習2:
  1. # source /root/keystonerc_admin
  2. # nova service-list
  3. # nova service-enable 另一部主機名稱 nova-compute
  4. # nova service-disable --reason "Test Server" 本地主機 nova-compute
  5. # nova service-list
啟動實體驗證 Nova 計算節點

增加新節點最後一步驟就下要啟動一實體!

練習3:
  1. # source /root/keystonerc_admin
  2. # nova service-list
  3. # source /root/keystonerc_myuser
  4. # nova boot --flavor m2.tiny --image small --poll test
  5. # source /root/keystonerc_admin
  6. # nova list --all-tenants
  7. # nova show <上項所列出的ID值>  ==> 注意看 hypervisor 項目
  8. 移除方式
    • # source /root/keystonerc_myuser
    • # nove delete test

RHEL 的 OpenStack (九)--管理 Nova 計算與控制器服務

Nova 計算服務
  • Nova 控制器節點執行大多數 Nova 服務!
    • nova-scheduler : 協調不同的 Nova 服務活動!

  • Nova 計算節點利用虚擬化軟體去管理、啟動 OpenStack 上的實體!

  • RHEL上的OpenStack 使用 openstack-db 指令,設定 Nova 服務的資料庫!
    • 為 Nova 建立使用者,並且將該使用者加入 service 這個租賃戶裡!
    • 為環境建立結束點,以及在 /etc/nova/nova.conf 檔內,設定合適的參數值!
    • 啟用與啟動 Nova 服務

  • 可用 openstack-status 查看狀態!

超用實體資源
OpenStack 允許在計算節點上,過用 CPU 與 RAM 資源!但不建議過度的使用,以下為建議的比例:
  • CPU : 16 : 1 (指實心 cole)
  • RAM : 1.5 : 1

/etc/nova/nova.conf 檔案內的 cpu_allocation_ratio 以及 ram_allocation_ratio 有設定比例!
練習1:
  1. # source /root/keystonerc_admin
  2. # systemctl status openstack-nova-scheduler
  3. # systemctl status openstack-nova-conductor
  4. # systemctl status openstack-nova-api
  5. # systemctl status openstack-nova-consoleauth
  6. # systemctl status openstack-nova-novncproxy
  7. 登入另一個計算節點
  8. # systemctl status openstack-nova-compute
  9. # systemctl status libvirtd
  10. 回到原來節點
  11. # keystone user-get nova
  12. # keystone user-role-list --user nova --tenant services
  13. # keystone service-list | grep nova
  14. # keystone endpoint-get --service compute
  15. # vim /etc/nova/nova.conf
    admin_tenant_name=services
    admin_user=nova
    admin_password=xxxxxxx
    auth_host=10.1.1.1
    auth_port=35357
    auth_protocol=http
    auth_uri=http://10.1.1.1:5000
    .....
  16. # vim /etc/nova/nova.conf
    rabbit_host=主機名稱(FQDN)
    rabbit_use_ssl=False
    rabbit_port=5672
    rabbit_userid=guest
    rabbit_password=guest
    ....
  17. # openstack-status

使用 CLI 佈署實體
佈署實體時,可用下列指令查看相關資訊:
  • nova flavor-list : 查看硬體設定
  • nova image-list : 查看用來啟動實體的影像檔
  • nova network-list : 查看可用網路
將上列指令所列出的ID收集好,即可使用 nova boot 指令,配置實體。nova list 指令可查看運行中的實體!
練習2:
  1. # source /root/keystonerc_myuser
  2. # cp /etc/issue /tmp
  3. # echo "Installed using nova command-line" >> /tmp/issue
  4. # nova keypair-add key1 > /root/key1
  5. # nova secgroup-create mysecgroup "SSH"
  6. # nova secgroup-add-rule mysecgroup tcp 22 22 0.0.0.0/0
  7. # nova image-list
  8. # nova flavor-list
  9. # neutron net-list
  10. # nova boot --flavor m1.small --image small --key-name key1 --security-groups mysecgroup --nic net-id=<net-list列出來private那一組ID>  --file /etc/issue=/tmp/issue test
  11. # nova list
  12. # nova list
  13. 利用 myuser / redhat 登入 dashboard,登入實體 test
  14. # nova floating-ip-list
  15. # nova floating-ip-associate test 10.1.1.2
  16. # chmod 600 /root/key1
  17. # ssh -i /root/key1 cloud-user@10.1.1.2 -->請保留,開另一個新的 teminal
  18. 登入本機
  19. # source /keystonerc_myuser
  20. # cinder create --display-name vol6 2
  21. # cinder list
  22. # nova volume-attach test <上項指令的ID> auto
  23. # cinder list
  24. <test 主機>$ lsblk
  25. 清除 nova 實體 
    # nova delete test
    # cinder delete vol6

除錯

練習3:

2015年12月10日 星期四

RHEL 的 OpenStack (八)--管理 Neutron 網路服務

Cinder 區塊儲存服務

  • Neutron 提供 OpenStack 網路連結功能以及定址 OpenStack 網路環境
  • 每個租賃戶可以擁有多個私人網段,亦允許租賃戶有自己的IP定址策略,就算是IP位置重疊也無妨!
  • OpenStack 的連網技術使用 plug-in 觀念!
  • 其基本連網模式是利用 Linux VLANs 以及 IP tables 來進行網路連網的隔離運作!
  • OpenStack 網路元件的組成,是由幾個代理人來執行:
    1. L3 agent: 提供外部存取 OpenStack 上的實體物件!
    2. DHCP agent: 提供子網路內部連結!
    3. Metadata agent: 提供訊息服務
    4.  LBaaS agent: 提供負載平衡服務
    5. Open vSwitch agent: 管理 Open vSwitch plug-in
練習1:
  1. # source /root/keystonerc_admin
  2. # systemctl status neutron-openvswitch-agent
  3. # systemctl status neutron-dhcp-agent
  4. # systemctl status neutron-l3-agent
  5. # systemctl status neutron-metadata-agent
  6. # systemctl status neutron-lbaas-agent
  7. # systemctl status neutron-ovs-cleanup
  8. # neutron agent-list
  9. # keystone user-list --tenant services
  10. # keystone user-get neutron
  11. # keystone service-get neutron
  12. # keystone endpoint-get --service network
  13. # vim /etc/neutron/neutron.conf
    admin_tenant_name=services
    admin_user=neutron
    admin_password=xxxxx
    auth_host=10.1.1.1
    auth_port=35357
    auth_protocol=http
    auth_uri=http://10.1.1.1:5000/
    ...
  14. # crudini --get /etc/neutron/neutron.conf DEFAULT core_plugin
  15. # crudini --get /etc/neutron/plugin.ini ml2 mechanism_drivers
  16. # crudini --get /etc/neutron/plugin.ini ml2 tenant_network_types
  17. # crudini --get /etc/neutron/plugin.ini ml2_type_vlan metwork_vlan_ranges
  18. # cat /etc/sysconfig/network-scripts/ifcfg-br-ex
  19. # ovs-vsctl show
  20. # openstack-status

租賃戶設定連網服務
  • 網路設定步驟:先新增 router,接下來才是建立網路與子網路!
  • 若子網路是私人網段,則使用 neutron router-interface-add 增加一個介面到 router 上!
  • 利用新增一個 Gateway 方式,將 router 連到外部網路!
  • 外部網路可以指定一個浮動IP,連結上實體物件!
  • OpenStack 利用核心功能,提供網路名稱空間的使用!
  • 網路空間包含虚擬存取網路資源的抽象層網路功能,類似 port 與介面的概念!
  • ip 以及 ifconfig  指令無法顯示網路空間!使用 ip netns 以及 iproute 才能清楚了解網路架構!
  • 範例指令:
    • # source /root/keystonerc_admin
    • # neutron router --list
    • # ip netns exec qrouter-UUID  ip a
    • # ip netns exec qruoter-UUID ping  10.1.1.2

練習2:
  1. # source /root/keystonerc_myuser
  2. # keystone router-create router1
  3. # neutron net-create private
  4. # neurton subnet-create --name subpriv private 192.168.0.0/24
  5. # neutron router-interface-add router1 subpriv
  6. # neutron port-list
  7. # neutron router-gateway-set router1 public
  8. # neutron floatingip-create public
  9. # neutron floatingip-list 
佈署LBAAS
LBAAS: Load Balance as a Service: 讓 Neutron 可以將網路流量分散到兩部以上的實體!
分散的方式有下列:
  • Round-Robin:在多個實體之間,轉換要求!
  • Source IP:來自於同一個IP的請求,導到同一個實體!
  • Least Connections:將流量導到最少的連結實體上!
練習3:
  1. # source /root/keystonerc_admin
  2. # grep CONFIG_LBAAS_INSTALL /root/answers.txt
  3. # neutron agent-list
  4. # grep service_plugins /etc/neutron/neutron.conf
  5. # grep service_provider /etc/neutron/neutron.conf
  6. # crudini --get /etc/neutron/lbaas_agent.ini DEFAULT device_driver
  7. # glance image-create --name web --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/web.img
  8. # glance image-list
  9. # source /root/keystonerc_myuser
  10. # echo "web1" > /root/index1.html
  11. # nova boot --flavor m2.tiny --image web --file /var/www/html/index.html=/root/index1.html web1
  12. # echo "web2" > /root/index2.html
  13. # nova boot --flavor m2.tiny --image web --file /var/www/html/index.html=/root/index2.html web2
  14. # neutron lb-pool-create --name lb1 --lb-method ROUND_ROBIN --protocol HTTP --subnet subpriv
  15. # nova list
  16. # neutron lb-member-create --address 192.168.0.2 --protocol-port 80 lb1
  17. # neutron lb-member-create --address 192.168.0.3 --protocol-port 80 lb1
  18. # neutron lb-healthmonitor-create --deplay 5 --type HTTP --max-retries 3 --timeout 2
  19. # neutron lb-healthmonitor-associate <上項指令所列出的ID值> lb1
  20. # neutron lb-vip-create --name lb1-vip --protocol-port 80 --protocol HTTP --subnet subpriv lb1
  21. # neutron floatingip-create public
  22. # neutron floatingip-associate <上項指令所列出的id值> <上兩項指令所列出的port id值>
  23. # neutron lb-member-list
  24. # curl 10.1.1.2
  25. # curl 10.1.1.2
  26. 清除方式:
    # neutron lb-vip-delete lb1-vip # neutron lb-pool-delete lb1 # nova delete web1 web2


Neutron 除錯

練習4:

RHEL 的 OpenStack (七)--管理 Cinder 區塊儲存服務

Cinder 區塊儲存服務

  1. OpenStack 內的區塊儲存服務由四個子服務所構成!
    • API 服務(openstack-cinder-api)
    • 排程服務(openstack-cinder-scheduler)
    • 卷冊服務(openstack-cinder-volume)
    • 備份服務(openstack-cinder-backup)

  2. 佈署區塊服務方式由三個狀態所組成:
    • 安裝前準備
    • 一般安裝設定
    • 卷冊服務規格設定

  3. 區塊服務支援的儲存方式:
    • LVM/iSCSI
    • ThinLVM
    • NFS
    • NetAPP NFS
    • Red Hat Storage (Gluster)
    • Dell EqualLogic

  4. openstack-cinder-volume:可將 volume group 直接附加到正在執行中的 Server!

  5. Cinder 服務開啟後,即可使用 cinder 指令管理 Cinder 卷冊!

練習1:
  1. # grep CINDER /root/answers.txt
    CONFIG_CINDER_INSTALL=y
    CONFIG_CINDER_DB_PW=xxxx
    CONFIG_CINDER_KD_PW=xxxx
    CONFIG_CINDER_BACKEND=lvm
    CONFIG_CINDER_VOLUMES_CREATE=n
    CONFIG_CINDER_VOLIMES_SIZE=20G
    ...
  2. # ps axf | grep cinder
  3. # crudini --get /etc/cinder/cinder.conf DEFAULT osapi_volume_workers
  4. # grep listen_port /etc/cinder/cinder.conf
  5. # ss -nlp | egrep 8776
  6. # ls /etc/cinder/
  7. # vim /etc/cinder/cinder.conf
    rabbit_host=10.1.1.1
    rabbit_port=5672
    rabbit_hosts=10.1.1.1:5672
    rabbit_use_ssl=False
    ====== 為了配合 Glance 運作 ========
    glance_host=10.1.1.1
    ====== 啟動支援 LVM 儲存方式 =======
    [lvm]
    iscsi_helper=lioadm
    volume_group=cinder-volumes
    iscsi_ip_address=10.1.1.1
    volume_driver=cider.volume.drivers.lvm.LVMISCSIDriver
    volume_backend_name=lvm
  8. # vim /etc/cinder/api-paste.ini
    [filter:authtoken]
    paste.filter_factory = keystonemiddleware.auth_token:filter_factory
    admin_tenant_name=services
    service_port=5000
    auth_uri=http://10.1.1.1:5000/
    service_host=10.1.1.1
    service_protocol=http
    admin_user=cinder
    identity_uri=http://10.1.1.1:35357
    admin_password=xxxxx
  9. # source /root/keystonerc_admin
  10. # keystone service-get cinder
  11. # keystone catalog --service volume
  12. # keystone user-get cinder
  13. # cinder list
管理 Cinder 卷冊
  1. 管理 Cinder 卷冊的工作:
    • 備份與移植
    • 針對卷冊形式,建立加密形式
    • 找尋被驗證服務註冊的結束點
    • 調整已存在卷冊大小

  2. 所需要使用的指令:
    • # cinder --help
    • # vgdisplay
    • # lvdisplay
練習2:
  1. # openstack-status
  2. # source /root/keystonerc_myuser
  3. # cinder create --display-name vol1 2
  4. # cinder list
  5. # vgs
  6. # cinder show vol1
  7. # grep backup_driver /etc/cinder/cinder.conf
    backup_driver=cinder.backup.drivers.swift
  8. # systemctl start openstack-cinder-backup.service
  9. # systemctl enable openstack-cinder-backup.service
  10. 建使用 myuser 建立備份之前,需要付予 SwiftOperator 角色
    • # source /root/keystonerc_admin
    • # keystone user-role-add --role SwiftOperator --user myuser --tenant myopenstack
    • # source /root/keystonerc_myuser
  11. # cinder backup-create vol1 --display-name vol1-backup
  12. # cinder backup-list
  13. # swift list
  14. # swift list volumebackups
  15. 刪除方式:
    • cinder delete vol1
    • cinder backup-delete ID (不是 Volume ID)
使用 Ceph 做為 Cinder 資料後端

Cinder 預設後端是 LVM ,可改成其他的儲存服務,例如: Ceph

練習3:
  1. 登入 Ceph 主機
  2. # ceph osd pool create volumes 128
  3. # ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'
  4. 登入 Cinder 主機
  5. # yum -y install ceph-common
  6. # vim /etc/ceph/ceph.client.cinder.keyring  ==> 內容貼上第 3 步驟產生的內容
  7. # chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
  8. 把 Ceph 主機上的 /etc/ceph/ceph.conf 複製到 Cinder 主機上的 /etc/ceph/ceph.conf
  9. # vim /root/client.cinder.key ==> 內容貼上第 3 步驟產生的「key」內容
    如果忘記,可在 Ceph 主機上,執行 # ceph auth get-key client.cinder
  10. # uuidgen
  11. # vim /root/secret.xml
    <secret ephemeral='no' private='no'>
      <uuid>由上一步驟產生的 UUID 值!</uuid>
        <usage type='ceph'>
          <name>client.cinder secret</name>
        </usage>
    </secret>
  12. # virsh secret-define --file /root/secret.xml
  13. # virsh secret-set-value --secret 上一步驟的 UUID 值! --base64 $(cat /root/client.cinder.key)
  14. # cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.orig
  15. # vim /etc/cinder/cinder.conf  ==> 增加下列資料:
    enabled_backends = rbd, lvm
    [rbd]
    volume_driver = cinder.volume.drivers.rbd.RBDDriver
    rbd_pool = volumes
    rbd_ceph_conf = /etc/ceph/ceph.conf
    rbd_flatten_volume_from_sanpshot = false
    rbd_max_clone_depth = 5
    rbd_store_chunk_size = 4
    rados_connect_timeout = -1
    glance_api_version = 2
    rbd_user = cinder
    rbd_secret_uuid = 上一步驟的 UUID 值!
  16. vim /etc/nova/nova.conf
    rbd_user=cinder
    rbd_secret_uuid=上一步驟的 UUID 值!
  17. # openstack-service restart nova
  18. # openstack-service restart cinder
  19. # source /root/keystonerc_admin
  20. # cinder create --display-name cephvol 1
  21. # cinder list
  22. 在 Ceph 主機上,確認一下卷冊內容:# rados -p volumes ls
  23. 刪除方式:  # cinder delete cephvol

以 Gluster 做為 Cinder 資料後端
GlusterFS 是 Red Hat Storage 的檔案系統,可用來做為 Cinder 的資料後端!
想要開啟這項功能,需要調整 /etc/cinder/cinder.conf 檔案內容!
  1. # yum install -y glusterfs-fuse
  2. # vim /etc/cinder/cinder.conf
    [DEFAULT]
    enabled_backends=lvm1,glusterfs1
    [lvm1]
    volume_group=cinder-volumes
    volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver
    volume_backend_name=lvm
    [glusterfs1]
    volume_driver=cinder.volume.drivers.glusterfs.GlusterfsDriver
    glusterfs_shares_config=/etc/cinder/shares.conf
    volume_backend_name=rhs
    [nfs1]
    volume_driver=cinder.volume.drivers.nfs.NfsDriver
    nfs_shares_config=/etc/cinder/nfsshares.conf
    volume_backend_name=nfs
  3. # vim /etc/cinder/shares.conf ==> 手動建立
    storage-server:/volumeX
    storage-server:/volumeY
  4. # source /root/keystonerc_admin
  5. # cinder type-create lvm  ==> 使用多個 Backend ,就需要宣告、建立合適的卷冊形式
  6. # cinder type-key lvm set volume_backend_name=lvm
  7. # cinder type-create glusterfs
  8. # cinder type-key glusterfs set volume_backend_name=rhs
  9. # cinder type-create nfs
  10. # cinder type-key nfs set volume_backend_name=NFS
  11. # openstack-service restart cinder
  12. # tail -f /var/log/cinder/volume.log
  13. # cinder create --display-name glustertest --volume-type glusterfs 1
  14. # cinder list
練習3:

  1. # yum install -y glusterfs-fuse
  2. # cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.orig2
  3. # ping -c 3 rhs
  4. # showmount -e rhs
  5. # glusterfs -s rhs --volfile-id=/volume0 /mnt/
  6. # df
  7. # umount /mnt
  8. # crudini --set /etc/cinder/cinder.conf DEFAULT enabled_backups glusterfs,lvm
  9. # crudini --set /etc/cinder/cinder.conf lvm volume_group cinder-volumes
  10. # crudini --set /etc/cinder/cinder.conf lvm volume_driver cinder.volume.drivers.lvm.LVMISCSIDriver
  11. # crudini --set /etc/cinder/cinder.conf lvm volume_backend_name LVM
  12. # crudini --set /etc/cinder/cinder.conf glusterfs volume_driver cinder.volume.drivers.glusterfs.GlusterfsDriver
  13. # crudini --set /etc/cinder/cinder.conf glusterfs glusterfs_shares_config /etc/cinder/shares.conf
  14. # crudini --set /etc/cinder/cinder.conf glusterfs glusterfs_sparsed_volumes false
  15. # crudini --set /etc/cinder/cinder.conf glusterfs volume_backend_name RHS
  16. # vim /etc/cinder/shares.conf
    rhs:/volume0
  17. # openstack-service restart cinder
  18. # tail /var/log/cinder/volume.log
  19. # df
  20. # source /root/keystonerc_admin
  21. # cinder type-create lvm
  22. # cinder type-key lvm set volume_backend_name=LVM
  23. # cinder type-create glusterfs
  24. # cinder type-key glusterfs set volume_backend_name=RHS
  25. # cinder type-list
  26. # cinder create --volume-type lvm --display-name vol2 1
  27. # cinder list
  28. # cinder create --volume-type glusterfs --display-name vol3 1
  29. # cinder list
  30. # df
  31. # cinder create --volume-type lvm --display-name vol4 1
  32. # cinder list
  33. 清除方式:
    # cinder delete vol2
    # cinder delete vol3
    # cinder delete vol4
  34. # cinder type-list
  35. 清除方式
    # cinder type-list
    # cinder type-delete lvm
    # cinder type-delete glusterfs
    # cp /etc/cinder/cinder.conf.orig2 /etc/cinder/cinder.conf # chown cinder:cinder /etc/cinder/cinder.conf
  36. # openstack-service restart cinder

除錯
練習4:

2015年12月9日 星期三

RHEL 的 OpenStack (六)--管理 Glance 影像服務

管理 Glance 影像服務
  • Glance 影像服務
    1. 作用方式如同將虚擬硬碟影像檔註冊。
    2. 使用者可增加新影像檔或從已經存在的 Server 取得快照。
    3. 快照影像檔可用於備份或是做為新 Server 的樣板。
    4. 已註冊的影像檔,存放在物件儲存服務中!
    5. Glance服務需要 Keystone 服務來進行身份驗證管理以及使用授權!
    6. Glance使用 MySQL 存放影像檔的資訊資料!
    7. Glance 支援不同的影像檔格式:
      影像格式 說明
      raw
      vhd
      vmdk
      vdi
      iso
      qcow2
      aki
      ari
      ami

    8. Glance支授不同的 Container 格式:
      Container格式 說明
      bare
      ovf
      ova
      aki
      ari
      ami

    9. 在 /root/answers.txt 檔案中:
      CONFIG_GLANCE_INSTALL=y
      CONFIG_GLANCE_BACKEND=file

  • Glance 目錄
    • /var/lib/glance/images : 假如 Backend 項目被設定成 file 時!
    • /etc/glance/ : Glance服務設定檔
    • ※PS:下一版的 Glance ,將取消 glance-registry.conf 檔案!

  • Glance Keystone 設定
    • # keystone endpoint-list
練習1:驗證 Glance 影像服務
  1. # grep GLANCE /root/answers.txt
  2. # ps axf | grep glance
  3. # grep workers /etc/glance/glance-*
  4. # grep bind_port /etc/glance/glance-api.conf
  5. # ss -nlp | grep 9292
  6. # cd /etc/glance
  7. # ls
  8. # vim /etc/glance/glance-api.conf
    rabbit_host=10.1.1.1
    flavor=keystone
    filesystem_store_datadir=/var/lib/glance/images/
  9. # vim /etc/glance/glance-registry.conf
    [database]
    connection=mysql://....
  10. # cd
  11. # ls -al /var/lib/glance/
  12. # source /root/keystonerc_admin
  13. # keystone service-get glance
  14. # keystone catalog --service image
  15. # keystone user-get glance
  16. # glance image-list --all-tenants
  17. # glance --debug image-list --all-tenants
    ※PS:一定要看見 HTTP/1.1 200 OK!
使用 Glance 影像服務儲存系統影像檔
  • 儲存系統影像檔
    • glance指令可以用來管理影像檔
    • 利用 virt-sysprep 指令,可將 KVM 虚擬機中的 Linux 作業系統,打包成影像檔,方便存入 Glance
    • 確認影像檔方式: qemu-img info IMAGENAME
    • # glance image-create --name "NAME" --is-public IS_PUBLIC --disk-format DISK_FORMAT --container-format CONTAINER_FORMAT --file IMAGEFILE
    • --location URL :可取代 --file
練習2:
  1. # source /root/keystonerc_admin
  2. # glance image-create --name small --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/small.img
  3. # glance image-list
  4. # glance image-show small
  5. # glance image-list --all-tenants
建立與封裝影像
  • 使用快照進行快速佈署
    • 快照是一種將執行中的實體,複製一份,簡化類似實體的建立過程!

  • 使用 Oz 建立影像檔
    • # oz-install -d 2 -t 3000 small-template.xml
    • /var/lib/libvirt/images
    • /etc/oz/oz.cfg
    • # yum install -y virt-manager virt-viewer gnome-font-viewer xorg-x11-xauth

練習3:
  1. # yum -y install oz libguestfs-tools crudini python-glanceclient
  2. # systemctl status libvirtd.service
  3. # virsh net-list
  4. # cat /usr/share/libvirt/networks/default.xml
  5. # virsh net-define /usr/share/libvirt/networks/default.xml
  6. # virsh net-start default
  7. # virsh net-autostart default
  8. # virsh net-list
  9. # wget http://demo.example.com/pub/small-template.xml
  10. # ls /dev/kvm
  11. # vim /usr/lib/python2.7/site-packages/oz/RedHat.py
    約80行的地方,加入參數:no_timer_check
    self.cmdline = "method=" + self.url + " ks=file:/ks.cfg no_timer_check"
  12. # crudini --set /etc/oz/oz.cfg libvirt image_type qcow2
  13. # oz-install -d 2 -t 3000 small-template.xml
  14. # yum -y install virt-manager virt-viewer gnome-font-viewer xorg-x11-xauth
  15. # ssh -X root@otherhost
  16. # virsh list
  17. # virt-viewer rhel7_x86_64
  18. # virt-sysprep --add /var/lib/libvirt/images/rhel7_x86_64.qcow2
  19. # scp root@localhost:/root/keystonerc_admin /root/
  20. # source /root/keystonerc_admin
  21. # glance image-create --name "myozimage" --is-public True --disk-format qcow2 --container-format bare --file /var/lib/libvirt/images/rhel7_x86_64.qcow2
  22. # glance image-list
  23. 打開firefox,連進 dashboard,使用 testuser/redhat
  24. 使用 Compute > Instance ,按下 Launch Instance 按鈕
  25. 輸入下列相關資料:
    參數名稱參數值
    Details
    • Instance Name : My sealed template
    • Flavor : m2.tiny
    • Instance count : 1
    • Instance boot source: Boot from image
    • Image name: myozimage
    Details
    • Key pair: Key2
    • Security groups: sec2
    Networking
    • Selected Networks: net1

    按下 Launch 按鈕
  26. 在 Actions 欄位中,打開下拉式選單,選擇 Associate Floating IP!
  27. 選擇 10.1.1.28 ,以及在 Port to be associated之下,選擇 My sealed template: 192.168.0.4,然後再按下 Associate 按鈕!
  28. # rm -f ~/.ssh/know_hosts
  29. # ssh root@10.1.1.28
  30. # ping 10.1.1.254
  31. # exit
  32. 若要移除 instance ,則在 Instance 子標籤中,選擇所有實體,按下 Terminate Instance 按鈕,再按下 Terminate Instance 按鈕確認即可!

設定 Swift 為 Glance 資料後端
  • 預設值中,Glance 以及快照均使用 /var/lib/glance/images 目錄來存放影像
  • 可修改設定檔 glance-api.conf 來指定使用 Swift 提供服務
    • 將 default_store 改成 swift
    • 在 [glance_store] 項目中,設定 glance.store.swift.Store 要設定
    • swift_store_auth_address 提定  Swift API 結束點
    • swift_store_user
    • swift_store_key
    • swift_store_create_container_on_put 要設定成 true
練習4:
  1. # source /root/keystonerc_admin
  2. # glance image-list
  3. # glance image-delete myozimage
  4. # glance image-delete small
  5. # glance image-list --all-tenants
  6. # glance image-delete 00000000-1111-abcd-dcba-0987654321fe
  7. # glance image-delete 22222222-1111-abcd-dcba-0987654321fe
  8. # cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.orig
  9. # crudini --set /etc/glance/glance-api.conf DEFAULT default_store swift
  10. # crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.swift.Store
  11. # crudini --set /etc/glance/glance-api.conf glance_store swift_store_auth_address http://10.1.1.1:5000/v2.0/
  12. # crudini --set /etc/glance/glance-api.conf glance_store swift_store_user services:swift
  13. # crudini --set /etc/glance/glance-api.conf glance_store swift_store_key redhat
  14. # crudini --set /etc/glance/glance-api.conf glance_store swift_store_create_container_on_put true
  15. # cp /usr/share/glance/glance-api-dist-paste.ini /etc/glance/glance-api-paste.ini
  16. # cp /usr share/glance/glance-registry-dist-paste.ini /etc/glance/glance-registry-paste.ini
  17. # openstack-service restart glance
  18. # wget -N http://demo.example.com/pub/small.img
  19. # glance image-create --name small --disk-format qcow2 --container-format bare --file small.img
  20. # glance image-list
  21. 刪除方式:
    • glance image-delete small
    • crudini --set /etc/glance/glance-api.conf DEFAULT default_store file
    • crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.filesystem.Store,glance.store.http.Store
    • openstack-service restart glance
設定 Ceph 為 Glance 資料後端
  • Glance 服務可以使用 Ceph 做為資料後端!
練習5:
  1. 登入已經裝好 Ceph 的主機
  2. # ceph osd pool create images 128
  3. # ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
  4. 回到 Glance 主機
  5. # yum -y install python-rbd
  6. # mkdir /etc/ceph/
  7. # vim /etc/ceph/ceph.client.glance.keyring  ==> 將第3步驟的結果,複製到這裡!
  8. # chown glance:glance /etc/ceph/ceph.client.glance.keyring
  9. 把 Ceph 主機上的 /etc/ceph/ceph.conf 複製到 Glance 主機的  /etc/ceph/ceph.conf
  10. # cp /etc/glance/glance-api.conf /etc/glance/glance.conf.orig2
  11. # vim /etc/glance/glance-api.conf
    show_image_direct_url=True
    defalut_store = rbd
    [default_store]
    stores = glance.store.rbd.Store
    rbd_store_pool = images
    rbd_store_user = glance
    rbd_store_ceph_conf = /etc/ceph/ceph.conf
    rbd_store_chunk_size = 8
  12. # systemctl restart openstack-glance-api
  13. # source /root/keystonerc_admin
  14. # wet -N http://demo.example.com/pub/web.img
  15. # glance image-create --disk-format qcow2 --name cephweb --is-public True --container-format bare --file web.img
  16. # glance image-list
  17. 登入 Ceph 主機內
  18. # rados -p images ls
  19. 清除方式:
    • # glance image-delete cephweb
    • # crudini --set /etc/glance/glance-api.conf DEFAULT default_store file
    • # crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.filesystem.Store,glance.store.http.Store
    • # openstack-service restart glance
除錯
練習6:

RHEL 的 OpenStack (五)--執行與管理 Swift 物件儲存服務

佈署Swift物件儲存服務

<<什麼是Swift 物件儲存服務?>>
物件儲存使用下列三個觀念:
  • Storage replicas
  • Storage zones
  • Storage regions

<<Swift 物件儲存服務架構>>
OpenStack 物件儲存服務是一個模組化的服務,包含下列可用模組:
  • openstack-swift-proxy
  • openstack-swift-object
  • openstack-swift-container
  • openstack-swift-account

所有服務可在每一個節點或是指定的機器上!下列元件,可在適合的機器上操作:
  • Ring files
  • Object storage: /srv/node
  • Housekeeping processes

<<物件儲存服務佈署設定檔>>
  • All services run on all nodes: Simplest setup
  • Dedicated proxy nodes, all other services combined on other nodes
  • Dedicated proxy nodes, dedicated object service node, container and account services combined on other nodes
練習1:
  1. # yum -y install openstack-swift-proxy openstack-swift-object openstack-swift-container openstack-swift-account python-swiftclient memcached 
  2. # source /root/keystonerc_admin
  3. # keystone tenant-list | grep services
  4. # keystone user-create --name swift --pass redhat --tenant services
  5. # keystone role-list | grep admin
  6. # keystone role-create --name SwiftOperator
  7. # keystone user-role-add --user swift --role admin --tenant services
  8. # keystone service-list | grep swift
  9. # keystone service-create --name swift --type object-store --description "OpenStack Object Storage"
  10. # keystore endpoint-create --service swift --region RegionOne --publicurl "http://10.1.1.1:8080/v1/AUTH_%(tenant_id)s" --adminurl "http://10.1.1.1:8080/v1/AUTH_%(tenant_id)s"  --internalurl "http://10.1.1.1:8080/v1/AUTH_%(tenant_id)s"

佈署Swift儲存節點
  • 物件儲存服務存放物件於檔案系統上!檔案系統通常也連結數個節點!
  • 檔案系統通常被格式化成 ext4 或 xfs 格式,並掛載在/srv/node 目錄下!
  • 任何被指定的儲存節點,必須要安裝下列套件:openstack-swift-object , openstack-swift-container, openstack-swift-account
練習2:
  1. # mkdir -p /srv/node/z{1,2}d1
  2. # cp /etc/fstab /etc/fstab.orig
  3. # echo "/dev/vdc1 /srv/node/z1d1 xfs defaults 0 0" >> /etc/fstab
  4. # echo "/dev/vdd1 /srv/node/z2d1 xfs defaults 0 0" >> /etc/fstab
  5. # mount -a
  6. # df -h | grep srv
  7. # chown -R swift:swift /srv/node
  8. # restorecon -rv /srv
  9. # cp /etc/swift/*.conf /root/swift_orig/
  10. # crudini --set /etc/swift/swift.conf swift-hash swift_hash_path_prefix $(openssl rand -hex 10)
  11. # crudini --set /etc/swift/swift.conf swift-hash swift_hash_path_suffix $(openssl rand -hex 10)
  12. # cp /etc/swift/swift.conf /etc/swift/swift.conf.orig2
  13. # crudini --set /etc/swift/account-server.conf DEFAULF bind_ip 10.1.1.1
  14. # crudini --set /etc/swift/container-server.conf DEFAULF bind_ip 10.1.1.1
  15. # crudini --set /etc/swift/object-server.conf DEFAULF bind_ip 10.1.1.1
設定Swift Rings
  • Rings決定資料儲放在儲存節點叢集的哪一個地方
  • Rings 需要三個檔案:Object, Container, Account Services
  • Rings 檔案可由 swift-ring-builder 工具依下列三個參數產生:
    1. Partition power
    2. Replica count
    3. min_part_hours
  •  zone是第四個參數,用來增加硬體到 Rings
  • 範例:# swift-ring-builder /etc/swift/account.builder add z1-10.1.1.1:6202/accounts 100
  • /etc/swift 目錄內容,需要複製到每個節點的 /etc/swift 目錄
練習3:
  1. # source /root/keystonerc_admin
  2. # swift-ring-builder /etc/swift/account.builder create 12 2 1
  3. # swift-ring-builder /etc/swift/container.builder create 12 2 1
  4. # swift-ring-builder /etc/swift/object.builder create 12 2 1
  5. # for i in 1 2; do
    >swift-ring-builder /etc/swift/account.builder add z${i}-172.25.0.10:6202/z${i}d1 100
    >done
  6.  # for i in 1 2; do
    >swift-ring-builder /etc/swift/container.builder add z${i}-172.25.0.10:6201/z${i}d1 100
    >done
  7. # for i in 1 2; do
    >swift-ring-builder /etc/swift/object.builder add z${i}-172.25.0.10:6200/z${i}d1 100
    >done
  8. # swift-ring-builder /etc/swift/account.builder rebalance
  9. # swift-ring-builder /etc/swift/container.builder rebalance
  10. # swift-ring-builder /etc/swift/object.builder rebalance
  11. # ls /etc/swift/*gz
  12. # systemctl enable openstack-swift-account
  13. # systemctl enable openstack-swift-container
  14. # systemctl enable openstack-swift-object
  15. # openstack-service start swift
  16. # chown -R root:swift /etc/swift
  17. # tail /var/log/messages
佈署Swift代理服務
  • 物件儲存代理服務用來決定哪一個節點被引導去存取
練習4:
  1. # cp /etc/swift/proxy-server.conf /etc/swift/proxy-server.conf.orig
  2. # crudini --set /etc/swift/proxy-server.conf filter:authtoken admin_tenant_name services
  3. # crudini --set /etc/swift/proxy-server.conf filter:authtoken auth_host 10.1.1.1
  4. # crudini --set /etc/swift/proxy-server.conf filter:authtoken auth_uri http://10.1.1.1:5000
  5. # crudini --set /etc/swift/proxy-server.conf filter:authtoken admin_user swift
  6. # crudini --set /etc/swift/proxy-server.conf filter:authtoken admin_password redhat
  7. # systemctl start memcached
  8. # systemctl start openstack-swift-proxy
  9. # tail /var/log/messages
  10. # systemctl enable memcached
  11. # systemctl enable openstack-swift-proxy
在Swift中管理物件
  • 利用 swift 可以查詢儲存空間
練習5:
  1. # cd /etc/swift
  2. # grep bind_port *.conf
  3. # cd 
  4. # ls -al /srv/node/
  5. # swift-ring-builder /etc/swift/account.builder
  6. # swift-ring-builder /etc/swift/container.builder
  7. # swift-ring-builder /etc/swift/object.builder
  8. # vim /etc/swift/proxy-server.conf
    [DEFAULT]
    bind_port = 8080
    [pipeline:main]
    pipeline = ... keystone ...
    [app:proxy-server]
    allow_account_management = true
    account_autocreate = true
    [filter:keystone]
    operator_roles = admin, SwiftOperator
    [filter:authtoken]
    paste.filter_factory = keystonemiddleware.auth_token:filter_factory
    admin_tenant_name = services
    admin_user = swift
    admin_password = redhat
    auth_host = 10.1.1.1
    auth_port = 35357
    auth_protocol = http
    signing_dir = /tmp/keystone-signing-swift
    auth_uri = http://10.1.1.1:5000
  9. # openstack-service restart swift
  10. # source /root/keystonerc_admin
  11. # keystone user-get swift
  12. # keystone role-list
  13. # keystone service-get swift
  14. # keystone catalog --service object-store
  15. # swift list
  16. # swift post c1
  17. # swift post c2
  18. # echo "hello" > data1.file
  19. # swift upload c1 data1.file
  20. # echo "hello2" > data2.file
  21. # swift upload c1 data2.file
  22. # head -c 1024 /dev/urandom > data3.file
  23. # swift upload c2 data3.file
  24. # swift list
  25. # swift list c1
  26. # swift list c2
  27. # find /srv/node/ -type f -name "*data"
  28. # find /srv/node/ -type f -name "*data" -exec file {} \;
  29. # cat /srv/node/z1d1/....
Swift物件儲存服務的除錯
練習6:

2015年12月8日 星期二

RHEL 的 OpenStack (四)--管理 Keystone 驗證服務

Keystone 驗證服務
  1. Keystone 包含的項目:
    • 租賃戶(Tenants)
    • 角色(Rules)
    • 使用者(Users)
    • 服務(Services)
    • 結束點(End points)
    • 分類 (Catalog)
    • 權杖 (Tokens)
  2. 增加服務到 Keystone 服務分類以及註冊結束點
    • # keystone service-create --name=SERVICENAME --type=SERVICETYPE --description="DESCRIPTION OF SERVICE"
    • ※PS: type 共有 identity , compute, network, image , object-store

    • # keystone endpoint-create --service-id SERVICEID --publicurl 'URL' --adminurl 'URL' --internalurl 'URL'
      ※PS: service-id 可由上一項指令取得!

    • # keystone service-list
  3. 移除服務以及結束點
    • # keystone endpoint-list
    • # keystone endpoint-delete ENDPOINTID
    • # keystone service-list
    • # keystone service-delete SERVICEID
  4. OpenStack 設定檔
    • # crudini --set /etc/keystone/keystone.conf DEFAULT admin_token abcdef1234567890
      1. Option: --set, --get, --del
      2. Configuration file : OpenStack configuration file 的位置
      3. Section : 設定檔內的項目名稱,如:[DEFAULT]
      4. Parameter : 設定用的參數
      5. Value : 參數值
練習1:RabbitMQ
  1. 登入 Keystone 主機
  2. 在 Keystone 服務中,啟用 Administrator 權力
    • # cat /root/keystonerc_admin
      export OS_USERNAME=admin
      export OS_TENANT_NAME=admin
      export OS_PASSWORD=redhat
      export OS_AUTH_URL=http://10.1.1.1:5000/v2.0/
      export OS_REGION_NAME=RegionOne
      export PS1='[\u@\h \W(keystone_admin)]\$'
    • # source /root/keystonerc_admin
  3. 檢查 Keystone 是否設定成 OpenStack 的服務
    • # keystone service-list | grep keystone
    • # keystone catalog --service identity
  4. 所有 OpenStack 的服務,其後端資料與訊息的設定值,應存放在 /etc/SERVICE_NAME/SERVICE_NAME.conf 檔案內!
    • # grep "connection=mysql" /etc/keystone/keystone.conf
    • # grep rabbit /etc/keystone/keystone.conf
  5. 可連進 mysql 資料庫,確認一下 Keystone 所使用的資料表格!
    • # mysql -e 'use keystone; show tables;'

使用 keystone 指令管理使用者
  1. keystone 指令可用來管理使用者
    • # source ~/keystonerc_admin
    • # keystone user-create --name USERNAME --pass PASSWORD
    • # keystone user-list
    • # keystone user-delete USERID
  2. 利用 keystone 指令來管理租賃戶
    • # keystone tenant-create --name TENANTNAME
    • # keystone tenant-list
    • # keystone tenant-delete TENANTID
  3. 角色也可以利用 keystone 來定義
    • admin: 擁有管理者權限的角色
    • member: 專案成員的角色
    • # keystone role-create --name Member
  4. 使用者連結租賃戶與角色
    • # keystone user-role-add --user-id USERID --role-id ROLEID --tenant-id TENANTID
  5. 其他 keystone 指令
    • # keystone help
    • # keystone help user-role-list

練習2:利用keystone指令管理使用者
  1. # source /root/keystonerc_admin
  2. # keystone user-list
  3. # keystone role-list
  4. # keystone tenant-list
  5. # keystone user-role-list --user admin --tenant admin
  6. # keystone user-create --name joe --pass redhat
  7. # keystone tenant-create --name test
  8. # keystone user-role-add --user joe --role _member_ --tenant test
  9. # keystone user-role-list --user joe --tenant test
  10. # vim ~/keystonerc_joe
    export OS_USERNAME=joe
    export OS_TENANT_NAME=test
    export OS_PASSWORD=redhat
    export OS_AUTH_URL=http://172.25.0.10:5000/v2.0/
    export OS_REGION_NAME=RegionOne
    export PS1='[\u@\h \W(keystone_joe)]\$ '
  11. # source ~/keystonerc_joe
  12. # keystone token-get

Keystone 認證服務的除錯

<<重點觀念>>
  • 所有到達不同OpenStack服務API的要求,必須流經由 Keystone 所提供的驗證與授權的過程!
  • 任何發自於使用者指令的工作要求,均會帶有帳號密碼驗證值、屬哪一租賃戶,以及驗證的URL值!
  • 一旦通過身份驗證的使用者,會取得由 Keystone 發給的權杖,進行管理操作!
  • 例:一使用者通過使用 Nova 的驗證後,若要由 Glance 服務來產生新的實體,則會在 Nove 服務上,用權杖向 Glance 請求一新的實體影像檔,來進行實體的建立!
  • 在除 Keystone 的錯誤時,無法使用 /root/keystonerc_admin 的權限!可經由下列方式,取得兩項權杖參數:
    • # export SERVICE_TOKEN=$(crudini --get /etc/keystone/keystone.conf DEFAULT admin_token)
    • # export SERVICE_ENDPOINT=http://demo.example.com:35357/v2.0
練習3:
  1. # source /root/keystonerc_admin
  2. # glance image-list  -->沒找到網頁,認證失敗
  3. # cat /root/keystonerc_admin
  4. # vim /root/keystonerc_admin
  5. # source /root/keystonerc_admin
  6. # glance image-list -->現在變成不合理的認證值
  7. # grep -i ERROR /var/log/glance/*  --> port 不是 35357
  8. # grep -i 35357 /etc/glance/glance-api.conf
  9. # vim /etc/glance/glance-api.conf
    auth_port=353572 --> 改成 35357
  10. # systemctl restart openstack-glance-api
  11. # glance image-list