Ubuntu16手動安裝OpenStack——創建實例

目標

完成了《Ubuntu16手動安裝OpenStack——neutron篇》,意味著keystone、glance、nova和neutron都已經安裝完成,也就是說,openstack最小安裝已經完成。在安裝horizon、cinder和swift之前,我們先來通過命令行創建一個實例,驗證一下之前的安裝。

主要參考OpenStack Queens : Add UsersOpenStack Queens : Add UsersOpenStack Queens : Boot Instances

說明

本文操作全部都是在控制節點。
為了避免權限問題,建議切換到root用戶進行操作(否則要加很多sudo)。
sudo -i

網卡配置

參考Openstack的網卡設置和和OpenStack Networking Tutorial: Single-host FlatDHCPManager,配置eth2網卡。

1、查看當前網絡,ip add

image

route -nbrctl show

image

2、vim /etc/network/interfaces,添加:

auto eth2
iface eth2 inet manual
  up ifconfig $IFACE 0.0.0.0 up
  up ifconfig $IFACE promisc
#iface eth2 inet manual
#up ifconfig eth2 up

3、啟用網卡,ifup eth2

創建子網

1、vi /etc/neutron/plugins/ml2/ml2_conf.ini,如下修改:

# line 181: add
[ml2_type_flat]
flat_networks = physnet1

2、vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini,如下修改:

# line 147: add
[linux_bridge]
physical_interface_mappings = physnet1:eth2
# line 208: uncomment and change
enable_vxlan = false

3、重啟neutron-linuxbridge-agent
systemctl restart neutron-linuxbridge-agent

4、獲取projectID
. admin-openrc

projectID=$(openstack project list | grep service | awk '{print $2}')

5、創建名為sharednet1的網絡

openstack network create --project $projectID \
--share --provider-network-type flat --provider-physical-network physnet1 sharednet1
image

6、在sharednet1中創建子網10.0.0.0/24

openstack subnet create subnet1 --network sharednet1 \
--project $projectID --subnet-range 10.0.0.0/24 \
--allocation-pool start=10.0.0.200,end=10.0.0.254 \
--gateway 10.0.0.1 --dns-nameserver 10.0.0.10
image

7、查看網絡
openstack network list

openstack subnet list

image

添加用戶

首先使admin環境生效,. admin-openrc

1、添加siat項目
openstack project create --domain default --description "SIAT Project" siat

2、添加voidking用戶,密碼為openstack
openstack user create --domain default --project siat --password openstack voidking

3、添加clouduser角色
openstack role create clouduser

4、給voidking用戶添加clouduser角色
openstack role add --project siat --user voidking clouduser

5、因為cirros需要的資源很少,所以創建一個類型模板m1.tiny
openstack flavor create --id 0 --vcpus 1 --ram 256 --disk 5 m1.tiny

image

創建實例

環境準備

1、vi ~/voidkingrc,創建voidking環境腳本,內容如下:

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=siat
export OS_USERNAME=voidking
export OS_PASSWORD=openstack
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(keystone)\$ '

2、使環境生效
. voidkingrc

3、查看類型模板
openstack flavor list

4、查看可用鏡像
openstack image list

5、查看可用網絡
openstack network list

image

6、創建安全組
openstack security group create secgroup01

image

7、查看安全組
openstack security group list

image

8、創建ssh密鑰
ssh-keygen -q -N ""

密鑰文件保存在/home/root/.ssh/目錄下。

9、添加公鑰
openstack keypair create --public-key ~/.ssh/id_rsa.pub vkkey

image

10、查看公鑰
openstack keypair list

創建實例

1、給netID賦值
netID=$(openstack network list | grep sharednet1 | awk '{ print $2 }')

2、創建實例

openstack server create --flavor m1.tiny \
--image cirros --security-group secgroup01 \
--nic net-id=$netID --key-name vkkey cirros0
image

3、查看實例
openstack server list

image

如上圖,已經成功啟動實例,ip為10.0.0.206,nice。

PS:刪除實例命令,openstack server delete cirros0

訪問實例

配置安全組的安全設置,以便使用SSH和ICMP進行訪問。

1、設置允許ICMP
openstack security group rule create --protocol icmp --ingress secgroup01

image

2、設置允許ssh
openstack security group rule create --protocol tcp --dst-port 22:22 secgroup01

image

3、查看安全組規則
openstack security group rule list

image

4、訪問測試
ping 10.0.0.206 -c3

ping不通,看來網絡出了問題,等會再解決這個問題。

5、查看vnc的url,并復制該url
openstack console url show cirros0

image

6、url中的controller替換為192.168.56.110,在瀏覽器中打開


image

順利訪問,可以看到,cirros0的ip為192.168.56.102,難怪10.0.0.206無法ping通。

控制節點上,ping 192.168.56.102,依然不通。
vnc中,ping 192.168.56.110,也不通。

網絡問題

網橋支持

Configure the Linux bridge agent一節中,提到過要啟用網橋支持,那就啟用網橋試試。

1、查看ip轉發
cat /proc/sys/net/ipv4/ip_forward
如果值為0,那么改為1。

2、啟用網橋支持
vim /etc/sysctl.conf,添加

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

3、使配置生效
sysctl -p

修改后,依然無法ping通10.0.0.206。

網卡配置

1、查看ip
ip add

image

如上圖,和本文開始時相比,多了三個接口。

2、查看網橋
brctl show

image

3、vim /etc/network/interfaces,添加

auto brqedda68f7-72
iface brqedda68f7-72 inet static
address 10.0.0.1
netmask 255.255.255.0
bridge_stp off
bridge_fd 0

然后啟用brqedda68f7-72端口,ifup brqedda68f7-72

或者不配置interfaces,直接執行ifconfig brqedda68f7-72 10.0.0.1/24 up

5、查看網絡
ip add

route -n

image

不過,依然無法ping通10.0.0.206。畢竟,cirros0的ip不是10.0.0.206,而是192.168.56.102。這個ip,明顯是通過VirtualBox分配的,和虛擬機在同一個網段。

修改ip

既然cirros0的ip不對,那就給它手動修改一下,好主意。
1、通過vnc登錄cirros0

2、sudo vi /etc/network/interfaces,修改eth0的配置為:

auto eth0
iface eth0 inet static
address 10.0.0.206
netmask 255.255.255.0

3、重啟eth0
sudo ifdown eth0

sudo ifup eth0

4、在控制節點測試連接
ping 10.0.0.206 -c3

image

至此,問題解決。

訪問實例

1、cirros當前只支持密碼訪問:
ssh cirros@10.0.0.206,輸入密碼gocubsgo。

登錄后執行ls .ssh,并沒有authorized_keys文件,看來創建實例時并沒有注入密鑰,不知道什么原因。

2、在控制節點,添加密鑰到cirros0
ssh-copy-id -i .ssh/id_rsa.pub -p 22 cirros@10.0.0.206

3、用密鑰測試登錄
ssh cirros@10.0.0.206 -i .ssh/id_rsa

登錄成功。

4、如果重啟了控制節點,那么需要手動啟動cirros0
openstack server start cirros0

5、vnc的token也會改變,所以要重新獲取
openstack console url show cirros0

后記

至此,已經完成了嗎?想到一些問題:

  • cirros0理論上應該通過浮動ip進行訪問,我們這種直接訪問是鬧哪樣?
  • 以后每次創建實例,都要通過vnc重新配置ip?
  • 以后每次創建實例,都要手動添加密鑰?

也許是因為VirtualBox網卡分配不對,也許是因為在虛擬機中安裝,也許是因為控制節點網絡配置不對。。。不管了,反正創建實例完成,其他問題放在以后的文章中解決。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容