OpenStack IceHouse 部署 - 5 - 网络节点部署

Neutron网络服务(网络节点)





目录

 [隐藏]


参考


由于硬件条件所限并结合实际网络环境,本页并不是完全按照官方给出的指导[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.conf

neutron服务本身

/etc/neutron/plugins/ml2/ml2_conf.ini

ml2,二层网络插件

/etc/neutron/l3_agent.ini

虚拟网络路由服务

/etc/neutron/dhcp_agent.ini

虚拟网络DHCP

/etc/neutron/dnsmasq/dnsmasq-neutron.conf

DHCP服务具体配置,这里创建这个文件主要为了配置合适的网络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命令或以下命令查看:

[email protected]:~$ 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等)

[email protected]:~$ . admin-openrc.sh
[email protected]:~$ 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网段的那个接口上
查看虚拟路由接口:

[email protected]:/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

OpenStack IceHouse 部署 - 5 - 网络节点部署,布布扣,bubuko.com

时间: 2024-10-06 00:08:05

OpenStack IceHouse 部署 - 5 - 网络节点部署的相关文章

openstack icehouse系列之网络节点搭建

我们接着上一篇博文openstack icehouse系列之控制节点搭建继续往下开始搭建下面是环境介绍. 网络节点:ml2.openvswitch.DHCP.l3.metadata 控制节点:mysql.keystone.glance.nova.neutron.dashboard.cinder 计算节点:nova-compute.qemu-kvm.openvswitch.ml2 keystone:验证 glance:镜像 nova:计算 neutron:网络 Network setup (网络节

OpenStack IceHouse 部署 - 4 - 计算节点部署

Nova计算服务(计算节点) 参考 本页内容依照官方安装文档进行,具体参见Configure a compute node(nova service) 前置工作 数据库 由于我们在Nova(计算管理)部署配置中使用了mysql数据库,所以移除本地sqlite数据库 sudo rm /var/lib/nova/nova.sqlite 修改vmlinuz权限 For security reasons, the Linux kernel is not readable by normal users

openstack Juno系列之网络节点搭建

openstack Juno系列之网络节点搭建 neutron节点搭建 ------------------ 添加转发 vi  /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 刷新下 sysctl -p 安装neutron各模块服务 apt-get install neutron-plugin-ml2 neutron-plugin-open

OpenStack 存储服务 Cinder存储节点部署NFS(十七)

Cinder存储节点部署 1.安装软件包 yum install -y nfs-utils rpcbind 提示:早期版本安装portmap nfs-utils :包括基本的NFS命令与监控程序 rpcbind或portmap:支持安全NFS RPC服务的连接 2.配置NFS目录的访问权限.用户映射 mkdir -p /data/nfs vim /etc/exports /data/nfs *(rw,no_root_squash) 访问权限选项 设置输出目录只读:ro 设置输出目录读写:rw 用

openstack icehouse系列之控制节点搭建

大家都知道openstack是目前最热门.最火的一个开源云计算软件.openstack是IaaS(基础设施即服务)组件,让任何人都可以自行建立和提供云端运算服务. 今天学习搭建下openstack icehouse版本的搭建.下面是环境介绍 网络节点:ml2.openvswitch.DHCP.l3.metadata 控制节点:mysql.keystone.glance.nova.neutron.dashboard.cinder 计算节点:nova-compute.qemu-kvm.openvsw

Kubernetes二进制部署之单节点部署

K8s单节点二进制部署 K8s二进制部署搭建步骤: 1:自签ETCD证书 2:ETCD部署 3:Node安装docker 4:Flannel部署(先写入子网到etcd) ---------master---------- 5:自签APIServer证书 6:部署APIServer组件(token,csv) 7:部署controller-manager(指定apiserver证书)和scheduler组件 ----------node---------- 8:生成kubeconfig(bootst

Kubernetes集群部署之五node节点部署

部署kubelet: 1.二进制包准备 将软件包可执行文件从k8s-master复制到node节点中去. [[email protected] ~]# cd /usr/local/src/kubernetes/server/bin [[email protected]-master bin]# scp kubelet kube-proxy 10.200.3.106:/opt/kubernetes/bin/ [[email protected]-master bin]# scp kubelet k

恒天云快速部署指南--OpenStack H版本虚拟机单节点部署解决方案

本帖是openstack单节点在虚拟机上部署的实践.想要玩玩和学习openstack的小伙伴都看过来,尤其是那些部署openstack失败的小伙伴.本帖可以让你先领略一下openstack的魅力.本ISO由恒天云团队基于openstackH版本制作. ISO介绍 恒天云 All In One ISO是一个简单.易用.高效的恒天云部署工具.能够帮助用户快速部署恒天云单节点基础版本,从而更好的体验恒天云.本文档重点讲解在虚拟机中安装部署恒天云 All In One ISO,不包含物理机安装.物理机安

openstack学习笔记五 多节点部署之 rabbitmq信息中枢与元数据

元数据 rabbitmq信息中枢 rabbitmq信息中枢 所有组件通信的时候 实用 AMQP 高级消息队列 qpid rabbitmq    端口5672       sll加密 5671 192.168.1.201       h1.hequan.com     h1 192.168.1.202       h2.hequan.com     h2 192.168.1.203       h3.hequan.com     h3 在h3上操作  配置YUM源   把openstack软件包上