设为首页 收藏本站
查看: 1422|回复: 0

[经验分享] OpenStack IceHouse 部署

[复制链接]

尚未签到

发表于 2015-4-11 14:21:10 | 显示全部楼层 |阅读模式
Neutron网络服务(网络节点)












目录

[隐藏]

  • 1 参考
  • 2 前置工作

    • 2.1 调整内核参数

  • 3 安装
  • 4 配置

    • 4.1 keystone对接
    • 4.2 rabbitmq对接
    • 4.3 metadata服务对接
    • 4.4 ML2插件配置
    • 4.5 L3-agent
    • 4.6 DHCP-agent

  • 5 接口配置
  • 6 服务更新
  • 7 服务验证
  • 8 附加配置

    • 8.1 共享上网

      • 8.1.1 iptables NAT
      • 8.1.2 虚拟路由




参考
  由于硬件条件所限并结合实际网络环境,本页并不是完全按照官方给出的指导[1]进行.

前置工作

调整内核参数
  由于网络节点要承担起路由器的角色,必须把内核的转发功能打开,同时关闭反向路径过滤功能,编辑 /etc/sysctl.conf 修改其中的相关参数如下:

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0

  应用配置

# sysctl -p

安装

# apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent openvswitch-datapath-dkms neutron-l3-agent neutron-dhcp-agent

  注意:Ubuntu installations using Linux kernel version 3.11 or newer do not require the openvswitch-datapath-dkms package.

配置
  主要涉及以下配置文件

/etc/neutron/neutron.confneutron服务本身/etc/neutron/plugins/ml2/ml2_conf.iniml2,二层网络插件/etc/neutron/l3_agent.ini虚拟网络路由服务/etc/neutron/dhcp_agent.ini虚拟网络DHCP/etc/neutron/dnsmasq/dnsmasq-neutron.confDHCP服务具体配置,这里创建这个文件主要为了配置合适的网络MTU/etc/neutron/metadata_agent.ini元数据.../etc/nova/nova.conf(控制节点上)元数据...
keystone对接
  编辑配置文件/etc/neutron/neutron.conf,在对应小节修改(或添加)相关字段如下

[DEFAULT]
...
auth_strategy = keystone
...
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_host = controller
auth_protocol = http
auth_port = 35357
admin_tenant_name = service
admin_user = neutron
admin_password = neutron_pass

  这里假定neutron服务的keystone帐号密码为neutron_pass

rabbitmq对接
  修改配置文件/etc/neutron/neutron.conf, 在对应小节修改(或添加)相关字段如下

[DEFAULT]
...
rpc_backend = neutron.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_password = rabbit123

  这里假定消息队列默认用户(guest)的密码为rabbit123

metadata服务对接
  修改配置文件/etc/neutron/metadata_agent.ini, 修改配置文件相关字段如下:

[DEFAULT]
...
auth_url = http://controller:5000/v2.0
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = neutron_pass
nova_metadata_ip = controller
metadata_proxy_shared_secret = metadatasceret

  这里假定neutron服务的keystone帐号密码为neutron_pass,且在控制节点上配置的metadata_proxy_shared_secret为metadatasceret

ML2插件配置
  首先修改配置文件/etc/neutron/neutron.conf指定使用的插件

[DEFAULT]
...
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True

  注释掉所有[service_providers]下的内容 然后修改ml2插件单独的配置文件/etc/neutron/plugins/ml2/ml2_conf.ini,指定其使用openswitch,并采用GRE隧道,添加或修改相应的小节字段如下

[ml2]
...
type_drivers = gre
tenant_network_types = gre
mechanism_drivers = openvswitch
[ml2_type_gre]
...
tunnel_id_ranges = 1:1000
[ovs]
...
local_ip = 10.14.39.50
tunnel_type = gre
enable_tunneling = True
[securitygroup]
...
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True

  其中[ovs]小节中local_ip指定的时GRE隧道通信使用的网络接口的ip地址,由于我们台式机只有一张网卡,所以和管理服务共用一个接口.

L3-agent
  L3即三层网络(这里是ip网络),进行网络路由的层.修改配置文件 /etc/neutron/l3_agent.ini, 将相关字段小节添加(修改)如下:

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True

  关于linux网络命名空间在路由上的实际使用可以查看虚拟路由

DHCP-agent
  这里DHCP服务主要用于虚拟网络中ip地址动态分配,并指定合适的MTU值,修改配置文件/etc/neutron/dhcp_agent.ini,编辑相关内如下:

[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True
...
# Override the default dnsmasq settings with this file
dnsmasq_config_file = /etc/neutron/dnsmasq/dnsmasq-neutron.conf

  这里我们指定了dnsmasq服务的配置文件以覆盖默认配置,因为我们使用了GRE隧道,对于虚拟机来说MTU不再是默认的1500,必须进行修改,否则会造成数据传输卡顿,参见[2].
  创建dnsmasq的配置文件/etc/neutron/dnsmasq/dnsmasq-neutron.conf,加入如下内容

# explicitly set the MTU when using a GRE Tunnel(or big data packets won't tx/rx normally)
dhcp-option-force=26,1454
# set the dns server for internal virtual machines
server=10.10.0.21
# set local domain name
domain=dblab

  注意网上有些文章,给出MTU为1400的配置,这个值在虚拟机内使用VPN时也会造成网络传输问题,因为VPN隧道的MTU默认是1400,如果此时再指定虚拟以太网的MTU为1400则,大数据将无法收发,造成VPN能够连上,但依然无法访问网络的现象.

接口配置









单网卡接口配置方案  网络节点由于只有一个物理网络接口,但是按照三节点部署方案,在网络节点上需要用一个接口来接到外部网络,使得虚拟机能够访问外部网络,并且通过浮动IP配置,外部网络能够访问虚拟网络内的虚拟机.为此我们采用右图所示的配置方案.
  首先我们按照官方指导创建两个neutron系统默认使用的openswitch网桥(br-ex, br-int)如下

# service openvswitch-switch restart
# ovs-vsctl add-br br-int
# ovs-vsctl add-br br-ex

  接下来官方中,需要将一个连接在外网上的接口(比如eth2)加入到br-ex(该网桥就是负责外网与虚拟路由的连接)中,如下

# ovs-vsctl add-port br-ex eth2

  很遗憾我们没有这样的另一个网络接口(网卡),如果把我们仅有的网络接口(eth0)加入到网桥中比如

# ovs-vsctl add-port br-ex eth0

  很快就会发现,网络节点不能上网了,就连网关也ping不通了,因为加入到网桥的接口是作为二层接口来看待的,因此没有IP地址,也就是说我们现在的网络节点没有了IP地址了,沦落为一台二层设备了,不能进行任何的三层(IP网络)操作了.其实使用ovs-vsctl命令创建网桥时,会默认加入一个与网桥名同名的一个三层接口,对br-ex来说就是br-ex网络接口,可以通过ifconfig命令或以下命令查看:

admin@network:~$ sudo ovs-vsctl show
[sudo] password for admin:
dbee7ef4-5fda-45ab-a441-bf3adcfe2835
Bridge br-ex
Port br-ex
Interface br-ex
type: internal
Port "eth0"
Interface "eth0"
...

  因此我们可以将该接口的ip地址设成原来eth0的地址,即网络节点的地址10.14.39.50 / 24(在这之前确保eth0接口的地址已经被清零), 同时需要修改路由表,添加一条从br-ex接口上的默认路由(原先的默认路由会随着eth0地址的清空而被删除).至此网络节点的网络访问又恢复正常了,而且我们也向br-ex网桥中添加了一个接口eth0,这样至少可以使得虚拟机在校园网内被访问.
  总的来说需要进行如下配置

# ovs-vsctl add-br br-int
# ovs-vsctl add-br br-ex
# ifconfig eth0 0
# ovs-vsctl add-port br-ex eth0
# ifconfig br-ex 10.14.39.50 netmask 255.255.255.0
# route add default gw 10.14.39.1 br-ex

  如果网络节点拨了学校VPN的话请另外添加一条路由,使得其他校园内网能够正常访问,这对于其他节点主机也是一样的.

route add -net 10.0.0.0/8 gw 10.14.39.1 br-ex

服务更新
  为了日后管理方便,在admin用户下创建两个脚本文件

openvswitch_restart.sh
#! /bin/bash
service openvswitch-switch restart

neutron_restart.sh
##! /bin/bash
service neutron-plugin-openvswitch-agent restart \
&& service neutron-l3-agent restart \
&& service neutron-dhcp-agent restart \
&& service neutron-metadata-agent restart

  修改脚本权限

$ chmod +x openvswitch_restart.sh
$ chmod +x neutron_restart.sh

  运行脚本,重启服务以应用上述的配置

# ./openvswitch_restart.sh
# ./neutron_restart.sh

服务验证
  可以neutron客户端查看各个节点的agent状态(l2,l3,dhcp等)

admin@network:~$ . admin-openrc.sh
admin@network:~$ neutron
(neutron) agent-list
+--------------------------------------+--------------------+----------+-------+----------------+
| id                                   | agent_type         | host     | alive | admin_state_up |
+--------------------------------------+--------------------+----------+-------+----------------+
| 276b1204-db1a-4157-867b-c442e82221fc | Open vSwitch agent | network  | :-)   | True           |
| 798ce163-c600-48a6-a0a4-0b8eeb03a752 | Metadata agent     | network  | :-)   | True           |
| bc34ff15-aa0d-4b7e-9efb-c4413264fa24 | L3 agent           | network  | :-)   | True           |
| be1e8354-ce08-480e-aea1-2e5a17a64c60 | DHCP agent         | network  | :-)   | True           |
| dda050ed-6e90-43de-852c-6bb5c4a5daae | Open vSwitch agent | compute1 | :-)   | True           |
+--------------------------------------+--------------------+----------+-------+----------------+

  关注alive列,如果是":-)"则该服务正常,如果是XXX则说明该节点的相关服务出现问题.

附加配置

共享上网
  为了使得虚拟机能够直接通过网络节点的VPN上外网(方便测试和虚拟机配置),我们需要修改网络节点上的路由表和虚拟路由的路由表。

iptables NAT
  在拨通VPN连接后,系统一般会多出一个ppp0接口,需要将其他机器请求转发的包由这个网络接口送出,同时为了更好的伪装,我们修改报文的TTL数值,这使得外部无法区分本机发包和转发包。 首先使用iptables在nat表中加入一条如下

sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  然后在mangle表中加入一条修改包TTL的规则,统一将报文TTL修改为64

sudo iptables -t mangle POSTROUTING -o ppp0 -j TTL --ttl-set 64

虚拟路由
  先通过以下命令获得虚拟路由所在的命名空间

# ip netns
qrouter-e7286b63-5ea3-4470-9308-898be00b475b
qdhcp-e798d0d9-88a0-4f56-b412-599372e26409
qdhcp-a7b60bd2-b03f-4ea8-8b9e-ba0e022259c0
qdhcp-e2215146-953f-4fe0-b2fa-6864d44285a5

  其中含有router的即为虚拟路由命名空间
  删除原有默认路由(走10.14.39.1网关)

ip netns exec qrouter-e7286b63-5ea3-4470-9308-898be00b475b route del default

  然后添加一条默认路由(走10.14.39.50,即刚刚配置了MASQUERADE规则的网络节点,即本机),该默认路由需要添加在指向10.14.39.0/24网段的那个接口上 查看虚拟路由接口:

root@network:/home/admin# ip netns exec qrouter-e7286b63-5ea3-4470-9308-898be00b475b ifconfig
lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
qg-f8c30f08-16 Link encap:Ethernet  HWaddr fa:16:3e:9d:a6:8e  
inet addr:10.14.39.113  Bcast:10.14.39.255  Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fe9d:a68e/64 Scope:Link
UP BROADCAST RUNNING  MTU:1500  Metric:1
RX packets:83378 errors:0 dropped:0 overruns:0 frame:0
TX packets:33333 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16702676 (16.7 MB)  TX bytes:25097978 (25.0 MB)
qr-0b260f87-20 Link encap:Ethernet  HWaddr fa:16:3e:c1:96:32  
inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fec1:9632/64 Scope:Link
UP BROADCAST RUNNING  MTU:1500  Metric:1
RX packets:38719 errors:0 dropped:0 overruns:0 frame:0
TX packets:26447 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:26061304 (26.0 MB)  TX bytes:6118682 (6.1 MB)
qr-4a43399e-9d Link encap:Ethernet  HWaddr fa:16:3e:df:02:7b  
inet addr:192.100.0.1  Bcast:192.100.255.255  Mask:255.255.0.0
inet6 addr: fe80::f816:3eff:fedf:27b/64 Scope:Link
UP BROADCAST RUNNING  MTU:1500  Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2612 (2.6 KB)  TX bytes:738 (738.0 B)

  可以看到是qg-f8c30f08-16接口

ip netns exec qrouter-e7286b63-5ea3-4470-9308-898be00b475b route add default gw 10.14.39.50 qg-f8c30f08-16

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56014-1-1.html 上篇帖子: OpenStack Ceilometer简介 下篇帖子: 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表