前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7.0+OpenStack+kvm云平台部署—配置Nova

CentOS7.0+OpenStack+kvm云平台部署—配置Nova

作者头像
菲宇
发布2019-06-11 17:53:05
8170
发布2019-06-11 17:53:05
举报
文章被收录于专栏:菲宇菲宇

初始化Nova

(1).安装nova:

[root@openstack ~]# yum -y installopenstack-nova

(2).创建nova数据库:

[root@openstack ~]# openstack-db--init --service nova

创建User,定义Services和 API Endpoints

(1).编写脚本:

[root@openstack ~]# vi/root/config/nova-user.sh

#!/bin/sh

my_ip=10.1.1.2

keystone user-create --name=nova--pass=service --email=nova@example.com

keystone user-role-add --user=nova--tenant=service --role=admin

keystone service-create --name=nova--type=compute --description="Nova Compute Service"

service=$(keystone service-list | awk'/nova/ {print $2}')

keystone endpoint-create--service-id=$service --publicurl=http://$my_ip:8774/v2/%tenantid

s--internalurl=http://$my_ip:8774/v2/%tenantids--adminurl=http://$my_ip:8774/v2/%tenantid

s

(2).运行脚本,创建用户、服务及api endpoint:

[root@openstack ~]# sh/root/config/nova-user.sh

配置nova服务:

(1).修改/etc/nova.conf配置文件:

[root@openstack ~]# vi /etc/nova/nova.conf

[DEFAULT]

my_ip = 10.1.1.2

auth_strategy = keystone

state_path = /openstack/lib/nova

verbose=True

allow_resize_to_same_host = true

rpc_backend =nova.openstack.common.rpc.impl_qpid

qpid_hostname = 10.1.1.2

libvirt_type = kvm

glance_api_servers = 10.1.1.2:9292

novncproxy_base_url =http://10.1.1.2:6080/vnc_auto.html

vncserver_listen = $my_ip

vncserver_proxyclient_address = $my_ip

vnc_enabled = true

vnc_keymap = en-us

network_manager =nova.network.manager.FlatDHCPManager

firewall_driver =nova.virt.firewall.NoopFirewallDriver

multi_host = True

flat_interface = eth0

flat_network_bridge = br1

#public_interface = eth0

instance_usage_audit = True

instance_usage_audit_period = hour

notify_on_state_change = vm_and_task_state

notification_driver =nova.openstack.common.notifier.rpc_notifier

compute_scheduler_driver=nova.scheduler.simple.SimpleScheduler

[hyperv]

[zookeeper]

[osapi_v3]

[conductor]

[keymgr]

[cells]

[database]

[image_file_url]

[baremetal]

[rpc_notifier2]

[matchmaker_redis]

[ssl]

[trusted_computing]

[upgrade_levels]

[matchmaker_ring]

[vmware]

[spice]

[keystone_authtoken]

auth_host = 127.0.0.1

auth_port = 35357

auth_protocol = http

admin_user = nova

admin_tenant_name = service

admin_password = service

因上述配置文件中修改了instances实例存放的位置,还需要作一下操作:

修改instances路径,设置目录权限:

[root@openstack ~]# cp -r/var/lib/nova/ /openstack/lib/

[root@openstack ~]# chown -R nova:nova/openstack/lib/nova/

(2).配置libvirtd服务,删除virbr0

启动libvirt服务:

[root@openstack ~]# service libvirtdstart

查看net-list,发现default:

[root@openstack ~]# virsh net-list

Name State Autostart Persistent

--------------------------------------------------

default active yes yes

删除default,即virbr0:

[root@openstack ~]# virsh net-destroydefault

Network default destroyed

[root@openstack ~]# virsh net-undefinedefault

Network default has been undefined

重启libvirtd服务,设置开机自启动:

[root@openstack ~]# service libvirtdrestart

[root@openstack ~]# chkconfig libvirtdon

(3).启动nova相关服务,设置开机自启动

[root@openstack ~]# service messagebusstart

[root@openstack ~]# chkconfigmessagebus on

启动nova服务,采用network网络服务:

[root@openstack ~]# serviceopenstack-nova-api start

[root@openstack ~]# serviceopenstack-nova-cert start

[root@openstack ~]# serviceopenstack-nova-consoleauth start

[root@openstack ~]# serviceopenstack-nova-scheduler start

[root@openstack ~]# serviceopenstack-nova-conductor start

[root@openstack ~]# serviceopenstack-nova-novncproxy start

[root@openstack ~]# serviceopenstack-nova-compute start

[root@openstack ~]# service openstack-nova-networkstart

[root@openstack ~]# chkconfigopenstack-nova-api on

[root@openstack~]# chkconfig openstack-nova-cert on

[root@openstack~]# chkconfig openstack-nova-consoleauth on

[root@openstack~]# chkconfig openstack-nova-scheduler on

[root@openstack~]# chkconfig openstack-nova-conductor on

[root@openstack~]# chkconfig openstack-nova-novncproxy on

[root@openstack~]# chkconfig openstack-nova-compute on

[root@openstack~]# chkconfig openstack-nova-network on

nova测试:

(1).创建网络:

[root@openstack~]# nova network-create vmnet --fixed-range-v4=10.1.1.0/24--bridge-interface=br1 --multi-host=T

[root@openstack ~]#novanetwork-list

[root@openstack ~]# nova-manage network list

(2).设置安全组:

[root@openstack~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

[root@openstack~]# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

openstack里的浮动ip知识点

缺省情况下实例会被赋予固定ip,这时并不能保证实例会马上可以从外面访问到,一般来说需要配置防火墙来允许公共ip,然后建立一条NAT规则从公共ip到私有ip的映射。 Ag引入了一个叫浮动ip的概念,浮动ip是一些可以从外部访问的ip列表,通常从isp哪里买来的。 浮动ip缺省不会自动赋给实例,用户需要手动从地址池里抓取然后赋给实例。一旦用户抓去后,他就变成这个ip的所有者,可以随意赋给自己拥有的其他实例。如果实例死掉了的话,用户也不会失去这个浮动ip,可以随时赋给其他实例。暂时不支持为了负载均衡多实例共享一个浮动ip。 而对于固定ip来说,实例启动后获得的ip也是自动的,不能指定某一个。所以当一个VM歇菜了,再启动也许固定ip就换了一个。 系统管理员可以配置多个浮动ip池,这个ip池不能指定租户,每个用户都可以去抓取。多浮动ip池是为了考虑不同的isp服务提供商,免得某一个isp出故障带来麻烦。 如果运行的是企业云,浮动ip池就是那些ag外的数据中心都能访问到的ip。 浮动ip机制给云用户提供了很多灵活性,也给系统管理员减少了安全风险,尽量只让Ag软件去改防火墙会安全些。

浮动 IP

要了解浮动 IP是如何实现的,首先将一个浮动IP关联到此实例的固定IP。之前所创建的这个实例的固定IP是10.10.10.2。

在默认池内创建一个浮动IP

要在默认池内创建一个浮动 IP,请运行一下代码:

代码语言:javascript
复制
# nova-manage floating create --ip_range=10.1.1.232/30

要从这个池分派一个浮动 IP,请运行一下代码:

代码语言:javascript
复制
# Nova floating-ip-create
代码语言:javascript
复制
代码语言:javascript
复制
创建VM实例
代码语言:javascript
复制
      使用nova image-list查看当前可用的镜像
代码语言:javascript
复制
      使用nova flavor-list查看当前可用的系统类型
代码语言:javascript
复制
使用nova boot创建VM实例,nova boot --flavor [flavor ID | flavor name]  --image [image ID | image name]  [instace_name],比如
代码语言:javascript
复制
nova boot --flavor m1.small --image 5290eb9f-f248-408f-a319-622c4a070ca8 test
代码语言:javascript
复制
创建成功后使用nova list查看实例状态
代码语言:javascript
复制
[root@bdpe11 ~(keystone_admin)]# nova list
代码语言:javascript
复制
+--------------------------------------+-----------+--------+-------------------------------------+
代码语言:javascript
复制
| ID                                   | Name      | Status | Networks                            |
代码语言:javascript
复制
+--------------------------------------+-----------+--------+-------------------------------------+
代码语言:javascript
复制
| dbaded92-b445-4106-a124-607150ff17c5 | Server 47 | ACTIVE | private=192.168.20.2, 192.168.148.1 |
代码语言:javascript
复制
| d9d4bea3-6387-4695-b031-965478623fb6 | Server 48 | ACTIVE | private=192.168.20.4, 192.168.148.2 |
代码语言:javascript
复制
+--------------------------------------+-----------+--------+-------------------------------------+
代码语言:javascript
复制

这样,就拥有一个 IP 10.1.1.233。现在将它分配给 ID为8f773639-c04f-4885-9349-ac7d6a799843的实例:

代码语言:javascript
复制
# nova add-floating-ip 8f773639-c04f-4885-9349-ac7d6a799843 10.1.1.233

将浮动IP绑定到公共接口

FLAGS.public_interface 被用来绑定浮动 IP。在运行了 novaadd-floating-ip 命令后,可以看到 public_interface 下就具有了如下的浮动 IP:

代码语言:javascript
复制
# ip addr list dev wlan0
代码语言:javascript
复制
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
代码语言:javascript
复制
link/ether 08:11:96:75:91:54 brd ff:ff:ff:ff:ff:ff
代码语言:javascript
复制
inet 192.168.1.90/16 brd 192.168.255.255 scope global wlan0
代码语言:javascript
复制
inet 192.168.1.233/32 scope global wlan0
代码语言:javascript
复制
    inet6 fe80::a11:96ff:fe75:9154/64 scope link 
代码语言:javascript
复制
valid_lft forever preferred_lft forever

NAT 表内针对浮动IP的规则

在此实例获得了 nova-network主机上的一个浮动 IP后,这些规则适用:

代码语言:javascript
复制
-A nova-network-OUTPUT -d 192.168.1.233/32 -j DNAT --to-destination 10.10.10.2
代码语言:javascript
复制
-A nova-network-PREROUTING -d 192.168.1.233/32 -j DNAT --to-destination 10.10.10.2 
代码语言:javascript
复制
-A nova-network-float-snat -s 10.10.10.2/32 -j SNAT --to-source 192.168.1.233

您会看到该 dNAT规则被用来将此浮动 IP转换成此实例的固定 IP。如果一个包到达nova-network主机并以浮动IP为目标 IP,则此目标 IP就会被转换。然后,就会有另一项sNAT规则会将来自此实例的固定IP的流量转换到此浮动IP。由于所有从 VM到固定网络之外的流量均被指向网关(是由nova-network的 dnsmasq 进行设置),有了 sNAT规则,出 VM的流量就可以成功标志成来自此浮动IP。此外,已包装的OUTPUT链内还有一个dNAT规则,允许nova-network上的本地过程访问具有浮动IP的 VM。

使用浮动IP的 Ping VM

要将 VM与浮动 IP Ping在一起,也需要一些规则。请记住,在此nova-compute主机上,针对每个实例必须有一个特定链;其内的规则只允许来自固定子集内的IP的流量。如果想要ping一个浮动IP,流量就会被这些规则丢弃,因为ping包的源IP并不在此固定子集内。显然,需要一个规则以允许icmp流量。

为了添加一个允许 ping的规则,可以使用Ag的安全组规则的概念:

代码语言:javascript
复制
# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

之后,就可以看到在此实例的特定链下多创建了一个规则:

-Anova-compute-inst-1 -p icmp -j ACCEPT

同样的方式,可以对具有浮动 IP的 VM启用 SSH。

(3).创建虚拟机实例:

查看可用镜像:

[root@openstack~]# nova image-list

创建虚拟机实例:

[root@openstack~]# nova boot --flavor 1 --image centos6.4 vm01

查看虚拟机实例运行状态:

[root@openstack ~]# novalist

+--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+

| ID | Name | Status | Task State | Power State | Networks |

+--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+

| f754afe1-784f-41d0-9139-a05d25eaca20| vm01 | ACTIVE | - | Running | vmnet=10.1.1.2 |

+--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+

测试虚拟机实例连通性: [root@openstack ~]# ping 10.1.1.2

PING 10.1.1.2 (10.1.1.2)56(84) bytes of data.

64 bytes from 10.1.1.2:icmp_seq=1 ttl=64 time=0.057 ms

64 bytes from 10.1.1.2:icmp_seq=2 ttl=64 time=0.037 ms

--- 10.1.1.2 pingstatistics ---

2 packets transmitted, 2received, 0% packet loss, time 1639ms

rtt min/avg/max/mdev =0.037/0.047/0.057/0.010 ms

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • openstack里的浮动ip知识点
    • 浮动 IP
    相关产品与服务
    NAT 网关
    NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档