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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介:

本文目的:  在基于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示例 

1
  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的优先级高



1
2
3
4
5
6
7
8
[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

1
2
[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网络的网卡

1
2
3
4
[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网络

1
2
3
4
5
[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 网络

1
[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

1
[root@controller ~] #  openstack router create router

4 关联vrouter

1
2
3
4
5
[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 创建虚拟机 

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

6 创建并绑定浮动 ip 

1
2
[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通该虚拟机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[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、在海航云创建一个虚拟网卡

    网卡地址为

1
192.168.11.111

2 目前海航云前端并不支持将公网ip直接绑定给虚拟网卡,采用曲线的办法

 新建一台测试机,关机,将改虚拟网卡挂载到该测试机,拆除测试机原来的网卡,在给该测试机绑定公网ip,最后将虚拟网卡从测试机中拆除

最后成果为

wKiom1nTNHjR7jI2AAAcwnv16yU115.png-wh_50

3 设置安全组规则并,通过该公网ip访问云主机中的云主机

wKioL1nTNNaQatTzAABQZKtO-cc023.png-wh_50


本文转自 superbigsea 51CTO博客,原文链接:http://blog.51cto.com/superbigsea/1970270


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
高可用应用架构
欢迎来到“高可用应用架构”课程,本课程是“弹性计算Clouder系列认证“中的阶段四课程。本课程重点向您阐述了云服务器ECS的高可用部署方案,包含了弹性公网IP和负载均衡的概念及操作,通过本课程的学习您将了解在平时工作中,如何利用负载均衡和多台云服务器组建高可用应用架构,并通过弹性公网IP的方式对外提供稳定的互联网接入,使得您的网站更加稳定的同时可以接受更多人访问,掌握在阿里云上构建企业级大流量网站场景的方法。 学习完本课程后,您将能够: 理解高可用架构的含义并掌握基本实现方法 理解弹性公网IP的概念、功能以及应用场景 理解负载均衡的概念、功能以及应用场景 掌握网站高并发时如何处理的基本思路 完成多台Web服务器的负载均衡,从而实现高可用、高并发流量架构
相关文章
|
6月前
|
存储 消息中间件 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
259 0
|
6月前
|
运维 数据可视化 Linux
云计算|OpenStack|社区版OpenStack安装部署文档(七--- 仪表盘服务dashboard的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(七--- 仪表盘服务dashboard的安装部署---Rocky版)
152 0
|
Linux 数据库
【Openstack】排错:Glance服务安装后HTTP 500解决
在搭建Openstack平台时,装完各个组件后发现了glance无法正常使用
2629 0
【Openstack】排错:Glance服务安装后HTTP 500解决
|
3月前
|
安全 API 网络安全
OpenStack的 网络服务(Neutron)
【8月更文挑战第23天】
171 10
|
6月前
|
存储 关系型数据库 MySQL
云计算|OpenStack|社区版OpenStack安装部署文档(四 --- 镜像服务glance安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(四 --- 镜像服务glance安装部署---Rocky版)
171 0
|
2月前
|
存储 消息中间件 算法
深入解析OpenStack Cinder:块存储服务详解
本文介绍了OpenStack及其块存储服务Cinder。OpenStack是一个开源云计算管理平台,提供基础设施即服务(IaaS),核心服务包括计算、网络、存储等。Cinder主要用于为虚拟机提供持久性块存储,具备多种功能,如卷操作、备份、快照及与实例的交互等。此外,还详细介绍了Cinder的工作流程、命令行操作及不同存储插件的使用。
292 8
|
6月前
|
Linux 网络安全 API
云计算|OpenStack|社区版OpenStack安装部署文档(五 --- 计算服务nova安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(五 --- 计算服务nova安装部署---Rocky版)
325 0
|
API 数据库 数据安全/隐私保护
(五)Open Stack(M)----Neutron服务安装与配置(上)
(五)Open Stack(M)----Neutron服务安装与配置(上)
115 0
|
6月前
|
Linux API 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(六 --- 网络服务neutron的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(六 --- 网络服务neutron的安装部署---Rocky版)
185 0
|
6月前
|
关系型数据库 MySQL 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(三 --- 身份认证服务keystone安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(三 --- 身份认证服务keystone安装部署---Rocky版)
164 0