2017年9月15日-2017年10月20日 大型openstack項目運維筆記

 

     

一、三個ceph monitor節點clock skew時鐘偏移問題?
解決:(1)其餘控制節點更改ntp.conf與controller01進行同步,若是ntpd不生效,使用date -s "10:24:25"命令強制更改。
(2)[root@node-3 ~]# ceph health detail 
mon.node-3 addr 192.168.15.4:6789/0 clock skew 14.5967s > max 5s (latency 0.0261497s)
[root@node-3 ~]# vim /etc/ceph/ceph.conf
mon_clock_drift_allowed = 15 ##注意上面的14.567秒,必須大於這個值才行,固然前提是NTP已經同步,date時間相同
mon_clock_drift_warn_backoff = 30
[root@node-3 ~]# ceph-deploy --overwrite-conf admin node-1 node-2
[root@node-3 ~]# systemctl restart ceph-mon@node-3.service
而後,登錄到node-一、node-2分別只須要重啓mon服務,不須要重啓存儲節點的osd服務,一個節點運行systemctl restart ceph-mon.target應該也行,會重啓全部Mon,實驗結果好像不行,仍是單獨到每一個節點重啓吧。
[root@node-1 ~]# systemctl restart ceph-mon@node-1.service
[root@node-2 ~]# systemctl restart ceph-mon@node-2.servicehtml

 

二、監控節點運行ceph -s命令發現too many PGs per OSD(896 > max 300),並出現集羣健康告警?
解決:(1)[root@node-3 ~]# ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-1 0.97198 root default 
-2 0.06580 host node-2 
 0 0.06580 osd.0 up 1.00000 1.00000 
-3 0.45399 host node-4 
 1 0.45399 osd.1 up 1.00000 1.00000 
-4 0.45219 host node-5 
 2 0.45219 osd.2 up 1.00000 1.00000 
問題緣由爲集羣osd 數量較少,測試過程當中創建了大量的pool
(2)在Mon節點,[root@node-3 ~]# vim /etc/ceph/ceph.conf
mon_pg_warn_max_per_osd = 1000
[root@node-3 ~]# ceph-deploy --overwrite-conf admin node-1
[root@node-3 ~]# systemctl restart ceph-mon@node-3.service
[root@node-1 ~]# systemctl restart ceph-mon@node-1.servicenode

 

三、啓動OpenStack虛擬機失敗,控制檯顯示no bootable device?
解決:鏡像不該該爲qcow2格式,應該爲raw格式,raw格式的鏡像能對接後端ceph存儲。
# qemu-img convert image.qcow2 -O raw image2.rawweb

 

# glance image-create --name CentOS-20171025 --disk-format raw --container-format bare --os-distro centos --visibility public --file=file.raw –progressdocker

 

 

四、roller的web界面部署ceph集羣error現象?
解決:[root@roller ~]# roller task
[root@roller ~]# roller task delete -f --task 【任務ID】
[root@roller ~]# roller node --node-id 【error的節點序列號】--deploy --env 1  //重複執行執行error節點個數對應的相應次數shell

 

五、部署節點沒法ssh到全部控制節點?
答:(1)默認是Public key登錄,已經把控制節點的ssh配置文件改成password auth仍是不行。
(2)把部署節點的/root/.ssh/known_hosts的對應控制節點IP記錄刪除便可。json

 

六、存儲節點全部osd都down掉?(耗時最長的問題)
最終解決(NTP問題):起初,控制節點systemctl status ceph-mon@3.service正常,存儲節點systemctl status ceph-osd@1.service狀態均爲active,可是osd就是起不來。
最開始嘗試過幾種方式排錯,但沒啥結果:
 
第一種(失敗):觀察到PG一直處於creating狀態,參考網上資料說是crushmap的問題?
未解決:(1)# ceph osd getcrushmap -o crush.map
# crushtool -d crush.map -o crush.txt //反編譯才能看的懂文件
# vim crush.txt //在ruleset中修改
  step set_choose_tries 100
# crushtool --compile crush.txt -o better.crush.map
# ceph osd setcrushmap -i better-crush.map
參考文檔:http://blog.csdn.net/u012320882/article/details/46553961
(2)PG一直處於creating的緣由就是沒法與osd進行關聯,一旦互聯完成,歸置組狀態應該變爲 active+clean,從而客戶端沒法讀寫數據,那麼問題應該放在OSD上面,而不是PG上面了。OSD異常是由於PG的狀態是果。
 
第二種方式(失敗):一度發現osd進程起不來,說是啓動進程的請求太快了
(1)# service ceph status osd.0  或則systemctl restart ceph-osd@0.service  發現服務起不來
解決重啓osd服務失敗:Start request repeated too quickly啓動請求太快了
# vim /etc/systemd/system/ceph-osd.target.wants/ceph-osd@0.service
----------
註釋 StartLimitInterval = 30min
-------
# systemctl daemon-reload
# systemctl restart ceph-osd.target   //啓動本機上全部osd進程
存儲節點執行# systemctl status ceph-osd@0.service,服務起來了,可是osd依然是down的狀態,應該須要在控制節點的Mon服務上下功夫,osd進程好了後,須要向Mon進行報告,若是不報告,那麼Mon依然認爲osd掛了。
參考文檔:http://www.cnblogs.com/wuyuxin/p/7041364.html
(2)可是ceph osd tree發現全部節點依然down掉,服務雖然起來了。執行ceph health detail發現
pg is stuck inactive ,current state creating,last acting  基本上能夠定位ceph建立PG失敗
根據第第一種方式的思考,發現PG狀態是結果但不是緣由。
(3)重啓控制節點的mon服務試試,沒用。
(4)在各個osd節點,執行ceph-disk activate-all無濟於事
參考文檔:https://www.2cto.com/net/201704/633243.html
控制節點ceph-deploy osd activate  ceph01:/dev/sdb1 ceph02:/dev/sdb1激活也沒用,注意權限最好爲chown ceph:ceph /dev/sdb1
(5)在存儲節點dmesg |grep scsi查看硬盤是否錯誤。或dmesg |less 查看內核錯誤
參考文檔:http://docs.ceph.org.cn/rados/troubleshooting/troubleshooting-osd/
 
第三種方式(成功): 由於有人的提醒,我才關注NTP不對時問題。
(1)起初改了ntp.conf,重啓ntpd服務,依然不對時。
(2)控制節點由於改了BIOS,硬件時鐘是與10.109.192.5的NTP服務器互通,可是存儲節點是私網地址沒法與NTP互通,因而更改存儲節點的/etc/ntp.conf,把server字段改成控制節點10.10.1.5,重啓完ntpd服務,執行ntpq -p命令後,執行date命令可是時間依然不一樣步。
(3)無奈之下,date -s 10:28:12 強制臨時改時間,然後,發現某個存儲節點與控制節點能稍微同步,因而改其餘存儲節點與能同步的節點,從新再ntp.conf中定義,osd終於up了,如釋重負。
(4)寫入系統時鐘,hwclock -w vim

 

七、由於交換機都是trunk模式,須要部署節點打vlan標籤訪問Horzion?後端

 

事先下載vconfig的rpm包,而後modprobe 8021qcentos

解決:# vconfig add ensp0f0 805
# ifconfig ensp0f0.805 10.138.249.249/24 up
# ping 10.138.249.254
# ip r add 10.138.0.0/16 via 10.138.249.254 dev ensp0f0.805api

 

 

八、沒法ping通業務網絡的VIP,進而沒法訪問雲操web界面?
解決:(1)懷疑是否是剛改了haproxy的配置文件,然後重啓crm resource p_haproxy服務的問題。
(2)ping不通VIP,可是能夠ping通控制節點的業務網絡IP。
(3)tail /var/log/messages 發現rabbitmq inet error,因而我重啓rabbitmq-server無果
(4)然後,想執行neutron agent-list發現managent vip也不通,因而懷疑是harproxy的問題了。
(5)移走以前容器部署更改的haproxy配置文件,crm resource restart p_haproxy,發現能夠Ping通VIP了。
(6)ip netns exec haproxy bash ip a,能夠在某一個節點看到VIP,同時注意到其餘節點並無VIP,當其餘節點正常以後,VIP也不會飄逸到其餘節點上去。
最後,檢查配置文件發如今1002-rabbitmq-api.cfg中,監聽端口少寫了個數字。

 

九、如何知道一個OpenStack虛擬機運行在哪臺計算節點上面?
解決:# nova list --all-tenants
# nova show 【虛擬機的UUID】

十、如何用命令查看控制節點br-storage、br-ex、br-roller等網橋的走哪些網卡?
解決:ovs-vsctl show

十一、如何判斷服務器接口所連的交換機端口是哪一個?
解決:[root@node-3 ~]# dhclient eth1
SWitch# show mac address_table |include ABCD ##ABCD是eth1網卡的後4位MAC地址,華爲是display mac address_table
SWitch# conf t
SWitch# interface te1/0/1
SWitch# switchport mode trunk
SWitch# switchport trunk allowed vlan add 401-410,166
SWitch# show running-config interfaces te1/0/1
[root@node-3 ~]# ethtool eth1
SWitch# interface te1/0/1
SWitch# shutdown
[root@node-3 ~]# ethtool eth1 ##觀察狀態

 

十二、服務器Ping不通交換機的vlan子接口的IP地址172.16.161.254?
解決:(1)交換機進行配置該eth3網卡所連交換機端口的所屬vlan
SW# int te1/0/5 ## show running-config interface te1/0/5
SW# switchport mode access
SW# switchport access vlan 161 //是172.16.161.253所在vlan,用show running-config
SW# show mac_address_table
(2)[root@node-1 ~]# ifconfig eth3 172.16.161.162/25 up
[root@node-1 ~]# ip r add default via 172.16.161.254 dev eth3 ##添加默認路由
[root@node-1 ~]# ping 172.16.161.254 -I eth3 ##指定發包的源接口
[root@node-1 ~]# ovs-vsctl show |grep br-eth3
[root@node-1 ~]# ovs-vsctl del-port br-eth3 eth3
[root@node-1 ~]# ping 172.16.161.254 -I eth3
(3)緣由是,eth3網卡連上了一個br-eth3網橋,而網橋又連着交換機,發包的時候,網橋不知道去向哪兒,能夠增長br-eth3的IP地址,也能夠刪除網橋便可

 

1三、搭建http形式的遠程yum倉庫,用於解決在多臺openstack虛擬機上沒有光驅鏡像的yum倉庫的問題。

節點一(ip爲192.168.43.129)配置以下:
[root@node-1 ~]# yum install httpd -y ##物理節點的光盤裏有httpd,或者把ISO文件拷貝到某個虛擬機上面也行
[root@node-1 ~]# mkdir /var/www/html/http_yum
[root@node-1 ~]# mount /dev/sr0 /var/www/html/http_yum
[root@node-1 ~]# systemctl stop firewalld && systemctl enable httpd && systemctl start httpd

節點二(ip爲192.168.43.128)配置以下:
[root@node-2 ~]# cd /etc/yum.repos.d/
[root@node-2 yum.repos.d]# rename repo repo.bak *.repo
[root@node-2 yum.repos.d]# vim node-1.repo
[node-1]
name=node-1-httpd
baseurl=http://192.168.43.129:/http_yum
enabled=1
gpgcheck=0
[root@node-2 yum.repos.d]# yum repolist
[root@node-2 yum.repos.d]# yum list all|grep NetworkManager

 

1四、ansible批量查看16臺節點的網卡名稱,MAC信息,千兆萬兆帶寬

(1)在一臺能夠上網的機器安裝ansible軟件

[root@ceph ~]# vim /etc/yum.conf
keepcache=1
[root@ceph ~]# yum clean all
[root@ceph ~]# yum install ansible createrepo -y
[root@ceph ~]# cd /var/cache/yum/x86_64/7/
[root@ceph ~]# cp base/packages/* /srv/ansible_repo
[root@ceph ~]# cp extras/packages/* /srv/ansible_repo
[root@ceph ~]# scp /srv/ansible_repo root@noode-2:/mnt/ansibe_repo

(2)在一臺不能上網的機器配置ansible源
[root@node-2 ~]# cd /mnt/ansible_repo
[root@node-2 ~]# rpm -ivh createrepo*.rpm
[root@node-2 ~]# cd ..
[root@node-2 ~]# createrepo ansible_repo
[root@node-2 ~]# vim /etc/yum.repos.d/ansibl.repo
[ansible]
name=local ansible yum
baseurl=file:///mnt/ansible_repo
enabled=1
gpgcheck=0
[root@node-2 ~]# yum repolist
[root@node-2 ~]# yum install ansible -y
[root@node-2 ~]# vim /etc/ansible/hosts
[test]
node-01 ansible_ssh_pass=passw0rd
node-16 ansible_ssh_pass=passw0rd
------------------------------------
[root@node-2 ~]# ansible test -m -a "ifconfig |grep eth[0-9]|awk -F: '{print $1}"
node-1 | SUCCESS | rc=0 >>
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

[root@node-2 ~]# ansible test -m -a "ifconfig |grep ether|awk '{print $2}'"
node-1 | SUCCESS | rc=0 >>
ether 00:0c:29:19:80:06 txqueuelen 1000 (Ethernet)
ether 00:0c:29:19:80:10 txqueuelen 1000

[root@roller mnt]# ansible test -m shell -a "ethtool eth0|grep -i speed"
node-1 | SUCCESS | rc=0 >>
Speed: 1000Mb/s(Ethernet)

[root@roller mnt]# tar zcvf ansible.tar.gz ansible_repo/   ##把這個壓縮包下載下來,防止沒法連外網而沒法安裝ansible

 

1五、爲何我明明使用1T的系統盤,可是進入lsblk一看,只有幾個G左右的LVM,我覺得是沒分完區,再fdisk /dev/vda,分是能分紅功,可是df和lsblk發現vda3只有1K?
解決:(最終發現是虛擬機模板鏡像不合適)就是不管你分配多大配額上去,每一個虛擬機的系統盤默承認用的就只有8G,可是並非說系統盤只有8G,須要把沒分配完的分區,而後擴展到LVM當中。
[root@host-172-16-1-229 ~]# lsblk
[root@host-172-16-1-229 ~]# fdisk /dev/vda
【一直回車,而且使用主分區,不使用擴展分區,w保存退出】
[root@host-172-16-1-229 ~]# partprobe
[root@host-172-16-1-229 ~]# pvcreate /dev/vda3
[root@host-172-16-1-229 ~]# vgextend centos /dev/vda3
[root@host-172-16-1-229 ~]# lvextend -L +192G /dev/centos/root ##192G是lsblk看到未分配的容量
[root@host-172-16-1-229 ~]# xfs_growfs /dev/centos/root
[root@host-172-16-1-229 ~]# df -Th

 

1六、對更改配置(好比調整系統盤)後的openstack虛擬機作快照後,保存爲glance模板鏡像,然後,再建立新的虛擬機,主要用來解決新建立的虛擬機默認系統盤只有8G的問題。
解決:(1)在web界面,對擴展LVM後的雲主機作快照
(2)在控制節點glance image-list能夠看到快照的ID
(3)glance image-download 【快照ID】 --file centos72.raw
(4)glance image-create -name centos72 --visibility public --disk-format raw --os-distro centos --container-format bare --progress --file=centos72.raw
(5)在web界面使用新鏡像建立新的虛擬機。

 

1七、如何獲取token?
解決:# source openrc
# keystone token-get //獲得很長的ID即是

 

1八、剛部署docker集羣的時候,啓動docker失敗?
10月 16 15:12:07 bogon systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
10月 16 15:12:07 bogon systemd[1]: Failed to start Docker Application Container Engine.
10月 16 15:12:07 bogon systemd[1]: Unit docker.service entered failed state.
解決:第一種狀況:[root@bogon docker]# vim /etc/docker/daemon.json
{ "storage-driver": "devicemapper" }
[root@bogon docker]# systemctl restart docker
第二種萬不得已的狀況:[root@bogon docker]# yum remove docker //從新下載
第三種狀況:[root@bogon docker]# rm -f /var/run/docker.sock
[root@bogon docker]# systemctl restart docker

 

 

先寫這麼多,後續還有更多的筆記須要補充....

相關文章
相關標籤/搜索