openstack in openstack(在openstack公有云上面搭建openstack 服務)

本文目的:  在基於openstack構建的海航雲上面搭建一個包含基本組件的openstack服務,並讓該openstack裏啓動的實例直接通過彈性公網ip被訪問。

一、背景知識:

1、海航雲:https://www.haihangyun.com  一個基於純openstack構建的公有云,在我來騰訊之前工作的地方。

2、安全組: openstack對於每個虛擬網卡都提供安全組,在不添加規則情況下,所有流量都是禁止通過。

3、port address pairs。openstack默認只允許從port上發出 IP 和 MAC 地址與其 IP 和 MAC 地址都相同的網絡包。舉例:系統給我的雲主機的dhcp的ip是 192.168.0.10,默認開啓安全組情況下情況如果我將虛擬機的ip由dhcp改爲 192.168.0.11,雲主機將無法對外通信。此時需要在在neutron的port 設置上添加 address pairs規則,讓系統允許他以 192.168.0.11對外通訊。詳見http://superuser.openstack.org/articles/managing-port-level-security-openstack/


二,環境搭建

1 網絡

       創建 兩個私有網絡:Provider,Management。其中Provider需要開啓公網網關。關閉兩個網絡的安全組功能。目前海航雲需要人工提交工單關閉安全組。在社區版的openstack中。ocata之前的neutron client 並不支持創建創建不開啓安全組功能的網絡,需要直接調用api來進行操作。


最新的pike的neutron client已經支持。

wKioL1nTNYzBA97oAABNEuVKiiY891.png-wh_50


api示例 

 curl -g -i -X POST http://controller:9696/v2.0/networks  -H "X-Auth-Token: bdd45bb441ec1816dcb56a9c90a6a8ae84aac9ec" -d '{"network": {"port_security_enabled": false, "name": "test", "admin_state_up": true}}'


成功創建的截圖

wKiom1nS7B_BPnkxAAA6l4EewAM169.png-wh_50





2 啓動兩個實例 controller compute1,並將他們同時加入Provider,Management 兩個私有網絡

wKiom1nS7YGDkgSRAAA46PbJrg0222.png-wh_50





3、因爲雲主機加入了兩個網絡,並且只有一個網絡添加了公網接口,所以需要設置默認網關,確保

192.168.11.1的優先級高



[root@host-192-168-11-4 cloud-user]#route add default gw 192.168.11.1
[root@host-192-168-11-4 cloud-user]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.11.1    0.0.0.0         UG    100    0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth1
192.168.11.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0


4、網路拓撲


wKiom1nS7PugH08PAAAt_Z7puDA156.png-wh_50


三 安裝過程

安裝過程參考官網文檔

https://docs.openstack.org/install-guide/openstack-services.html#minimal-deployment

幾個不同地方

1、在nova裝過程中,指定vnc的url爲 controller節點的彈性公網ip

[root@compute1 cloud-user]# grep novncproxy_base_url  /etc/nova/nova.conf|grep -v ^#
novncproxy_base_url = http://*.*.*.*:6080/vnc_auto.html

2 在neutro安裝中

指定vxlan網絡的localip 和provider網絡的網卡

[root@controller ~]# cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini |grep local_ip|grep -v ^#
local_ip = 192.168.1.9
[root@controller ~]# cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini |grep physical_interface_mappings |grep -v ^#
physical_interface_mappings = provider:eth0

 四 運行實例並通過彈性公網ip訪問

1 創建provider網絡

[root@controller ~]#openstack network create  --share --external --provider-physical-network provider --provider-network-type flat provider
[root@controller ~]openstack subnet create --network provider \
  --allocation-pool start=192.168.11.100,end=192.168.11.200 \
  --dns-nameserver 114.114.114.114 --gateway 192.168.11.1 \
  --subnet-range 192.168.11.0/24 provider

2 創建pravite 網絡

[root@controller ~]#  openstack subnet create --network pravite --dns-nameserver 114.114.114.114 --gateway 172.16.1.1 --subnet-range 172.16.1.0/24 pravite

3 創建vrouter

[root@controller ~]#  openstack router create router

4 關聯vrouter

[root@controller ~]# neutron router-interface-add router pravite
Added interface 18b2181a-ce8f-4a05-97a0-90793a980a28 to router router.
[root@controller ~]# neutron router-gateway-set router provider
Set gateway for router router
[root@controller ~]#

5 創建虛擬機 

openstack server create --flavor m1.nano --image cirros --nic net-id=e73b625b-edf8-43f0-b314-682f3b59e5a0--security-group default

6 創建並綁定浮動 ip 

[root@controller nova]# openstack  floating ip create d958d877-d3f8-4c9d-9154-459e2df872b9
[root@controller nova]# neutron  floatingip-associate   40663c10-a44d-4538-a1aa-b8daf34fb9f6  38d433b1-dd8f-4504-967c-17ef9da7eb9e

此時 我們已經可以在控制節點ping通該虛擬機

[root@controller nova]# ping 192.168.11.111
PING 192.168.11.111 (192.168.11.111) 56(84) bytes of data.
64 bytes from 192.168.11.111: icmp_seq=1 ttl=63 time=6.25 ms
64 bytes from 192.168.11.111: icmp_seq=2 ttl=63 time=1.46 ms
[root@controller nova]# openstack server show e9aea2f8-da7b-44e7-bcb0-274154e20cae
+-------------------------------------+----------------------------------------------------------+
| Field                               | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | AUTO                                                     |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| OS-EXT-SRV-ATTR:host                | compute1                                                 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute1                                                 |
| OS-EXT-SRV-ATTR:instance_name       | instance-00000001                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-SRV-USG:launched_at              | 2017-10-03T05:23:36.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | pravite=172.16.1.5, 192.168.11.111                       |
| config_drive                        |                                                          |
| created                             | 2017-10-03T05:23:21Z                                     |
| flavor                              | m1.nano (0)                                              |
| hostId                              | 93d1abb30f3702fa13e7d7ec74de6b3a4a56e7e4b763c9182fa8e256 |
| id                                  | e9aea2f8-da7b-44e7-bcb0-274154e20cae                     |
| image                               | cirros (b9768af8-8bb0-4ab8-8159-462d44d00e4f)            |
| key_name                            | None                                                     |
| name                                | 222                                                      |
| progress                            | 0                                                        |
| project_id                          | f521e63a95c74fbfa67d014b84b5e0c4                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | ACTIVE                                                   |
| updated                             | 2017-10-03T05:23:36Z                                     |
| user_id                             | a19a38e5f3f348e78cf7170f712bf3eb                         |
| volumes_attached                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

7 給虛擬機中的虛擬機綁定彈性ip

 1、在海航雲創建一個虛擬網卡

    網卡地址爲

192.168.11.111

2 目前海航雲前端並不支持將公網ip直接綁定給虛擬網卡,採用曲線的辦法

 新建一臺測試機,關機,將改虛擬網卡掛載到該測試機,拆除測試機原來的網卡,在給該測試機綁定公網ip,最後將虛擬網卡從測試機中拆除

最後成果爲

wKiom1nTNHjR7jI2AAAcwnv16yU115.png-wh_50

3 設置安全組規則並,通過該公網ip訪問雲主機中的雲主機

wKioL1nTNNaQatTzAABQZKtO-cc023.png-wh_50

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章