NSD CLOUD DAY03
1 案例1:配置yum倉庫
1.1 問題
本案例要求把三個鏡像配置yum源:
- CentOS7-1708光盤內容作為倉庫源
- 配置 RHEL7-extars內容加入倉庫源
- RHEL7OSP-10光盤中包含多個目錄,每個目錄都是倉庫源(可以使用腳本生成)
1.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:配置 yum倉庫
警告:僅yum配置的第一個源(系統源)為gpgcheck=1需要導入公鑰,其他的都是gpgcheck=0,否則安裝會報錯。
- [root@room9pc01 ~]# mkdir /var/ftp/system
- [root@room9pc01 ~]# mkdir /var/ftp/extras
- [root@room9pc01 ~]# mkdir /var/ftp/HEL7OSP
- [root@room9pc01 ~]# vim /etc/fstab
- /iso/RHEL7OSP-10.iso /var/ftp/HEL7OSP iso9660 defaults 0 0
- /iso/CentOS7-1708.iso /var/ftp/system iso9660 defaults 0 0
- /iso/RHEL7-extras.iso /var/ftp/extras iso9660 defaults 0 0
- [root@room9pc01 ~]# mount –a
- mount: /dev/loop0 is write-protected, mounting read-only
- mount: /dev/loop1 is write-protected, mounting read-only
- mount: /dev/loop2 is write-protected, mounting read-only
- [root@room9pc01 ~]# vim /etc/yum.repos.d/local.repo
- [local_repo]
- name=CentOS-$releasever - Base
- baseurl="ftp://192.168.1.254/system"
- enabled=1
- gpgcheck=1
- [local_extras]
- name=extras
- baseurl="ftp://192.168.1.254/extras"
- enabled=1
- gpgcheck=0
- [1local_devtools-rpms]
- name=devtools-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-openstack-10-devtools-rpms"
- enabled=1
- gpgcheck=0
- [2local_optools-rpms]
- name=optools-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-openstack-10-optools-rpms"
- enabled=1
- gpgcheck=0
- [3local_rpms]
- name=rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-openstack-10-rpms"
- enabled=1
- gpgcheck=0
- [4local_tools-rpms]
- name=tools-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-openstack-10-tools-rpms"
- enabled=1
- gpgcheck=0
- [5local_mon-rpms]
- name=mon-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-rhceph-2-mon-rpms"
- enabled=1
- gpgcheck=0
- [6local_osd-rpms]
- name=osd-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-rhceph-2-osd-rpms"
- enabled=1
- gpgcheck=0
- [7local_rhceph-2-tools-rpms]
- name=rhceph-2-tools-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-rhceph-2-tools-rpms"
- enabled=1
- gpgcheck=0
- [8local_agent-rpms]
- name=agent-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-rhscon-2-agent-rpms"
- enabled=1
- gpgcheck=0
- [9local_installer-rpms]
- name=installer-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-rhscon-2-installer-rpms"
- enabled=1
- gpgcheck=0
- [10local_rhscon-2-main-rpms]
- name=rhscon-2-main-rpms
- baseurl="ftp://192.168.1.254/HEL7OSP/rhel-7-server-rhscon-2-main-rpms"
- enabled=1
- gpgcheck=0
2 案例2:配置DNS服務器:
2.1 問題
本案例要求掌握DNS服務器的配置:
- 允許DNS服務器為所有的客戶端提供服務
- 解析域名openstack.tedu.cn
- 解析域名nova.tedu.cn
2.2 方案
此實驗的整體方案需要三台機器,openstack作為主節點,nova作為額外節點,真機做為DNS和NTP的服務器(這里不再在表-1中體現,在真機上面直接配置即可),提供域名解析和時間同步服務,具體情況如表-1所示:
表-1

2.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:配置DNS(真機操作)
- [root@room9pc01 ~]# yum -y install bind bind-chroot
- [root@room9pc01 ~]# vim /etc/named.conf
- options {
- listen-on port 53 { 192.168.1.3; }; //修改ip
- allow-query { any; }; //允許所有
- recursion yes;
- forwarders { 172.40.1.10; }; //轉發dns,真機的服務器地址
- dnssec-enable no;
- dnssec-validation no;
- };
- [root@room9pc01 ~]# systemctl restart named
步驟二:兩台虛擬機配置靜態ip
注意:兩台主機同樣操作,改一下ip即可(以openstack.tedu.cn為例)
- [root@localhost ~]# echo openstack.tedu.cn > /etc/hostname
- [root@localhost ~]# hostname openstack.tedu.cn //另外一台主機改名為nova.tedu.cn
- [root@openstack ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
- # Generated by dracut initrd
- DEVICE="eth0"
- ONBOOT="yes"
- IPV6INIT="no"
- IPV4_FAILURE_FATAL="no"
- NM_CONTROLLED="no"
- TYPE="Ethernet"
- BOOTPROTO="static"
- IPADDR="192.168.1.1"
- PREFIX=24
- GATEWAY=192.168.1.254
- [root@openstack ~]# systemctl restart network
步驟三:域名解析
- [root@openstack ~]# vim /etc/hosts
- //在openstack.tedu.cn和nova.tedu.cn主機上面操作
- 192.168.1.1 openstack.tedu.cn
- 192.168.1.2 nova.tedu.cn
測試能否ping通,如圖-1所示:

圖-1
3 案例3:配置NTP服務器
3.1 問題
本案例要求配置NTP時間同步服務器:
- 將NTP服務與DNS服務部署在同一台主機上
- 確認NTP服務器的時區是東八區
- 確認NTP服務器的時間准確
- 計划安裝openstack的服務器與NTP服務器進行時間校正
3.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:配置NTP時間同步(真機操作)
- [root@room9pc01 ~]# yum -y install chrony
- [root@room9pc01 ~]# vim /etc/chrony.conf
- server ntp1.aliyun.com iburst
- bindacqaddress 0.0.0.0
- allow 0/0 //允許所有人使用我的時間服務器
- cmdallow 127.0.0.1 //控制指令
- [root@room9pc01 ~]# systemctl restart chronyd
- [root@room9pc01 ~]# netstat -antup | grep chronyd
- udp 0 0 0.0.0.0:123 0.0.0.0:* 23036/chronyd
- udp 0 0 127.0.0.1:323 0.0.0.0:* 23036/chronyd
- [root@room9pc01 ~]# chronyc sources -v //出現*號代表NTP時間可用
- ^* 120.25.115.20 2 6 17 62 -753us[-7003us] +/- 24ms
4 案例4:環境准備
4.1 問題
本案例要求准備基礎環境,為安裝openstack做准備:
- 准備openstack的基礎環境
4.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:准備基礎環境
1)配置yum源
備注:只有系統源的gpgcheck=1,其他的都是gpgcheck=0)
- [root@room9pc01 ~]# scp /etc/yum.repos.d/local.repo \
- 192.168.1.1:/etc/yum.repos.d/ //拷貝給openstack.tedu.cn這台主機
- [root@room9pc01 ~]# scp /etc/yum.repos.d/local.repo \
- 192.168.1.2:/etc/yum.repos.d/ //拷貝給nova.tedu.cn這台主機
步驟二:配置ip
備注: 配置eth0為公共網絡,網絡地址192.168.1.0/24(已經配置過)
配置eth1為隧道接口,網絡地址192.168.2.0/24
1)給openstack.tedu.cn主機添加eth1網卡
- [root@room9pc01 networks]# virsh -c qemu:///system attach-interface openstack bridge private2 --model virtio
- Interface attached successfully //添加成功
- [root@openstack ~]# cd /etc/sysconfig/network-scripts
- [root@openstack network-scripts]# cp ifcfg-eth0 ifcfg-eth1
- [root@openstack network-scripts]# vim ifcfg-eth1
- # Generated by dracut initrd
- DEVICE="eth1"
- ONBOOT="yes"
- IPV6INIT="no"
- IPV4_FAILURE_FATAL="no"
- NM_CONTROLLED="no"
- TYPE="Ethernet"
- BOOTPROTO="static"
- IPADDR="192.168.2.1"
- PREFIX=24
- GATEWAY=192.168.1.254
- [root@openstack network-scripts]# systemctl restart network
2)給nova.tedu.cn主機添加eth1網卡
- [root@room9pc01 networks]# virsh -c qemu:///system attach-interface nova bridge private2 --model virtio
- Interface attached successfully //添加成功
- [root@nova ~]# cd /etc/sysconfig/network-scripts
- [root@nova network-scripts]# cp ifcfg-eth0 ifcfg-eth1
- [root@nova network-scripts]# vim ifcfg-eth1
- # Generated by dracut initrd
- DEVICE="eth1"
- ONBOOT="yes"
- IPV6INIT="no"
- IPV4_FAILURE_FATAL="no"
- NM_CONTROLLED="no"
- TYPE="Ethernet"
- BOOTPROTO="static"
- IPADDR="192.168.2.2"
- PREFIX=24
- GATEWAY=192.168.1.254
- [root@openstack network-scripts]# systemctl restart network
3)配置卷組(openstack主機上面操作)
- [root@room9pc01 images]# qemu-img create -f qcow2 disk.img 50G
- Formatting 'disk.img', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off
- [root@room9pc01 networks]# virsh -c qemu:///system attach-disk openstack \
- /var/lib/libvirt/images/disk.img vdb --subdriver qcow2 --sourcetype file
- Disk attached successfully //添加成功
- [root@openstack ~]# yum install lvm2
- [root@openstack ~]# pvcreate /dev/vdb
- [root@openstack ~]# vgcreate cinder-volumes /dev/vdb
4)安裝openstack的依賴包(openstack.tedu.cn和nova.tedu.cn主機上面
- [root@openstack ~]# yum install -y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
- [root@nova ~]# yum install -y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
5 案例5:部署Openstack:
5.1 問題
本案例要求通過packstack完成以下配置:
- 通過packstack部署Openstack
- 根據相關日志文件進行排錯
5.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:安裝packstack
- [root@openstack ~]# yum install -y openstack-packstack
- [root@openstack ~]# packstack --gen-answer-file answer.ini
- //answer.ini與answer.txt是一樣的,只是用vim打開answer.ini文件有顏色
- Packstack changed given value to required value /root/.ssh/id_rsa.pub
- [root@openstack ~]# vim answer.ini
- 11 CONFIG_DEFAULT_PASSWORD=redhat //密碼
- 42 CONFIG_SWIFT_INSTALL=n
- 75 CONFIG_NTP_SERVERS=192.168.1.3 //時間服務器的地址
- 554 CONFIG_CINDER_VOLUMES_CREATE=n //創建卷,已經手動創建過了
- 840 CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan //驅動類型
- 876 CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5
- //設置組播地址,最后一個隨意不能為0和255,其他固定
- 910 CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex //物理網橋的名稱
- 921 CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
- //br-ex橋的名稱與eth0連接,管理eth0,網橋與哪個物理網卡連接
- 936 CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1
- 1179 CONFIG_PROVISION_DEMO=n //DEMO是否測試
- [root@openstack ~]# packstack --answer-file=answer.ini
- **** Installation completed successfully ****** //出現這個為成功
步驟二:安裝openstack可能會出現的錯誤以及排錯方法
1)ntp時間不同步,如圖-2所示:

圖-2
解決辦法:查看ntp時間服務器,是否出現*號,若沒有,查看配置文件,配置ntp服務器步驟在案例3,可以參考
- [root@room9pc01 ~]# chronyc sources -v //出現*號代表NTP時間可用
- ^* 120.25.115.20 2 6 17 62 -753us[-7003us] +/- 24ms
- [root@openstack ~]# chronyc sources -v
- ^* 192.168.1.3 3 9 377 504 +50us[ -20us] +/- 24ms
- [root@nova ~]# chronyc sources -v
- ^* 192.168.1.3 3 9 377 159 -202us[ -226us] +/- 24ms
2)網橋名稱寫錯,如圖-3所示:

圖-3
解決辦法:檢查配置文件
- [root@openstack ~]# vim answer.ini
- ...
- 921 CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
- //br-ex橋的名稱與eth0連接,管理eth0,網橋與哪個物理網卡連接
- ...
3)若/root/.ssh/id_rsa.pub,提示password,同樣是配置文件沒有寫對,如圖-4所示:

圖-4
4)yum源沒有配置正確,如圖-5所示:

圖-5
解決辦法:檢查yum是否為10731個軟件包,查看是否是yum源沒有配置正確,之后安裝oprnstack-dashboard
備注:除了系統源gpgcheck=1之外,其他都是gpgcheck=0
5)出現Cannot allocate memory,如圖-6所示:

圖-6
解決辦法:
內存不足,重新啟動主機
6 案例6:網絡管理
6.1 問題
本案例要求運用OVS完成以下配置:
- 查看外部OVS網橋及其端口
- 驗證OVS配置
6.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:查看外部OVS網橋
1)查看br-ex網橋配置(br-ex為OVS網橋設備)
- [root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex
- ONBOOT="yes"
- NM_CONTROLLED="no"
- IPADDR="192.168.1.1"
- PREFIX=24
- GATEWAY=192.168.1.254
- DEVICE=br-ex
- NAME=br-ex
- DEVICETYPE=ovs
- OVSBOOTPROTO="static"
- TYPE=OVSBridge
2)查看eth0網卡配置(該網卡為OVS網橋的接口)
- [root@nova ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE=eth0
- NAME=eth0
- DEVICETYPE=ovs
- TYPE=OVSPort
- OVS_BRIDGE=br-ex
- ONBOOT=yes
- BOOTPROTO=none
3)驗證OVS配置
- [root@nova ~]# ovs-vsctl show
- Bridge br-ex
- Controller "tcp:127.0.0.1:6633"
- is_connected: true
- fail_mode: secure
- Port br-ex
- Interface br-ex
- type: internal
- Port phy-br-ex
- Interface phy-br-ex
- type: patch
- options: {peer=int-br-ex}
- Port "eth0"
- Interface "eth0"
- ovs_version: "2.5.0"
7 案例7:管理項目
7.1 問題
本案例要求通過Horizon完成以下操作:
- 創建名為myproject的項目
- 查看項目信息
- 更新vcpu配額為30
- 刪除myproject
7.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:瀏覽器訪問openstack
1)瀏覽器訪問
- [root@openstack conf.d]# firefox 192.168.1.1 //訪問失敗
2)需要改配置文件並重新加載
- [root@openstack ~]# cd /etc/httpd/conf.d/
- [root@openstack conf.d]# vi 15-horizon_vhost.conf
- 35 WSGIProcessGroup apache
- 36 WSGIApplicationGroup %{GLOBAL} //添加這一行
- [root@openstack conf.d]# apachectl graceful //重新載入配置文件
3)瀏覽器訪問,出現頁面,如圖-6所示:

圖-6
3)查看默認用戶名和密碼
- [root@openstack conf.d]# cd
- [root@openstack ~]# ls
- answer.ini keystonerc_admin //keystonerc_admin生成的文件,里面有用戶名和密碼
- [root@openstack ~]# cat keystonerc_admin
- unset OS_SERVICE_TOKEN
- export OS_USERNAME=admin //用戶名
- export OS_PASSWORD=1bb4c987345c45ba //密碼
- export OS_AUTH_URL=http://192.168.1.1:5000/v2.0
- export PS1='[\u@\h \W(keystone_admin)]\$ '
- export OS_TENANT_NAME=admin
- export OS_REGION_NAME=RegionOne
4)在火狐瀏覽器中輸入用戶名和密碼,登錄后頁面如圖-7所示:

圖-7
4)創建名為myproject的項目
- [root@openstack ~]# source ~/keystonerc_admin //初始化環境變量
- [root@openstack ~(keystone_admin)]# openstack project create myproject
- +-------------+----------------------------------+
- | Field | Value |
- +-------------+----------------------------------+
- | description | None |
- | enabled | True |
- | id |f73949e2701346328faf5c1272414cd0|
- | name | myproject |
- +-------------+----------------------------------+
5)查看項目信息
- [root@openstack ~(keystone_admin)]# openstack project list
- +----------------------------------+-----------+
- | ID | Name |
- +----------------------------------+-----------+
- | 3fd5bffd734543d39cf742492273a47f | services |
- | 7f0b43274a9f4e149357fc8393ff2c68 | admin |
- | f73949e2701346328faf5c1272414cd0 | myproject |
- +----------------------------------+-----------+
6)更新vcpu配額為30
- [root@openstack ~(keystone_admin)]# nova quota-update --cores 30 myproject
7)刪除myproject
- [root@openstack ~(keystone_admin)]# openstack project delete myproject