openstack学习笔记7-网络服务安装与配置

时间:2024-03-03 18:14:05

目录:

0 实验环境
1 概述
2 控制节点配置
2.1 先决条件
2.2 安装和配置组件
2.3 配置数据代理
2.4 配置网络服务
2.5 完成安装
3 创建网络
4 计算节点配置
4.1 服务配置
4.2 网络配置
4.3 配置计算服务使用网络服务
4.4 配置服务状态
5 验证


 0 实验环境

openstack版本:train

实验平台:vmware workstation 15.1

实验虚拟机:控制节点(centos 7.6,2核,4G内存),计算节点(centos 7.6,2核,2G内存)

虚拟机网络:

网络地址范围:管理网络192.168.223.0/24,营运商网络192.168.0.0/24

控制节点

网卡1:ens33,管理网络,192.168.223.11/24

网卡2:ens37,营运商网络

计算节点

网卡1:ens33,管理网络,192.168.223.31/24

网卡2:ens37,营运商网络

操作节点:控制节点和计算节点

本文涉及的帐号密码:

mysql数据库管理员:root:samplepass

neutron数据库用户:neutron:dbpass

nova服务用户:nova:npass

元数据metadata共享密码:msecret

1 概述

Openstack的网络服务neutron,可以适应不同的网络设备和软件,为OpenStack架构和部署提供灵活性。

网络服务主要与OpenStack计算服务交互,为其实例提供网络和连接。

网络服务是一种虚拟化的网络,通过各种插件(plugin),提供网络基础设施(VNI)的方方面面(如子网,交换路由等),并提供各种高级功能(如防火墙、vpn等)。

2 控制节点配置

Openstack的网络服务提供两种架构,一种是虚拟机的网络通过通过与节点网络接口桥接,直接访问外部网络,不能提供如虚拟防火墙等高级功能;另一种是虚拟机使用网络服务提供的网络,访问外部网络需要经过NAT地址转换。

2.1 先决条件

a)数据库配置

# mysql -u root -p    //使用root用户登录
MariaDB [(none)]> CREATE DATABASE neutron;    //创建数据库neutron
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO \'neutron\'@\'localhost\' IDENTIFIED BY \'dbpass\'; //设置neutron用户的本地登录权限和密码 
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO \'neutron\'@\'%\' IDENTIFIED BY \'dbpass\'; //设置neutron用户的远程登录权限和密码
MariaDB [(none)]> quit;

b)用户和权限配置

# . admin-openrc
# openstack user create --domain default --password-prompt neutron    //新建用户neutron,并设置密码,我设置的是npass
# openstack role add --project g_service --user neutron admin    //设置用户neutron在项目g_service中,角色为admin
# openstack service create --name neutron --description "OpenStack Networking" network    //为openstack创建网络服务

 

 

 c)服务API端点配置

# openstack endpoint create --region RegionOne network public http://controller:9696
# openstack endpoint create --region RegionOne network internal http://controller:9696
# openstack endpoint create --region RegionOne network admin http://controller:9696

2.2 安装和配置组件

网络结构的不同,安装和配置方式有区别,本文演示第一种,直接桥接到外部网络的方式。

外部网络为:192.168.0.0/24,网关:192.168.0.1,dns:61.139.2.69

a) 安装软件包

# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

b)编辑配置文件/etc/neutron/neutron.conf

[DEFAULT]节点:

[DEFAULT]
# ...
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:rabbitpass@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[database]节点:

[database]
#配置数据库连接字符串,用户名neutron,密码dbpass
connection = mysql+pymysql://neutron:dbpass@controller/neutron

[keystone_authtoken]节点:

[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = g_service username = neutron password = npass

[nova]节点:

[nova]
# 该节点在配置文件中没有,手动添加到最后
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = g_service
username = nova
password = npass

[oslo_concurrency]节点:

[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

c)配置2层模块插件(ML2 plugin)

编辑配置文件/etc/neutron/plugins/ml2/ml2_conf.ini,写入如下内容

[ml2]
#文件里没有该节点,手工增加
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security

[ml2_type_flat]
#文件里没有该节点,手工增加
flat_networks = provider

[securitygroup]
#文件里没有该节点,手工增加
enable_ipset = true

d)配置linux桥接代理

编辑配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
#配置桥接的物理网卡,在这里我的第二个网卡是ens37,第一个网卡用于管理网络
physical_interface_mappings = provider:ens37

[vxlan]
#禁止xvxlan模式
enable_vxlan = false

[securitygroup]
# 开启安全组,配置防火墙驱动
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

e)检查桥接包过滤模块:

# sysctl net.bridge.bridge-nf-call-iptables    //如果系统不支持就会出现下面的提示
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
# sysctl net.bridge.bridge-nf-call-iptables      //正常会如下显示值为1
net.bridge.bridge-nf-call-iptables = 1

正常情况下,安装过程会自动配置该模块,但是如果重启系统后,还是没有正常,可以做如下配置:

# modprobe br_netfilter    //临时启用
# echo br_netfilter > /etc/modules-load.d/openstack.conf    //在/etc/modules-load.d目录下创建文件,写入开机自动加载的模块名

f)配置dhcp代理

dhcp代理为虚拟网络提供dhcp服务。

编辑/etc/neutron/dhcp_agent.ini:

[DEFAULT]
# 使用dnsmasq来提供dhcp服务
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

2.3 配置数据代理

编辑配置文件/etc/neutron/metadata_agent.ini[DEFAULT]节点:

[DEFAULT]
# 配置元数据主机和共享密码
nova_metadata_host = controller
metadata_proxy_shared_secret = msecret

2.4 配置网络服务

编辑配置文件/etc/nova/nova.conf,在[neutron]节点设置相应参数:

[neutron]
# 注意neutron的密码和metadata的共享密码使用之前的操作中设置的密码
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = g_service
username = neutron
password = npass
service_metadata_proxy = true
metadata_proxy_shared_secret = msecret

2.5 完成安装

a)创建配置文件/etc/neutron/plugins/ml2/ml2_conf.ini的符号链接:

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

b)初始化数据:

# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

c)重启nova-api服务

# systemctl restart openstack-nova-api.service

d)配置网络服务状态

# systemctl enable --now neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent

3 创建网络

# . admin-openrc
# openstack network create  --share --external   --provider-physical-network provider   --provider-network-type flat provider    //--share允许所有项目使用,--external设置网络为外部网络,默认值为内部网络

 

创建子网(根据实际情况调整地址等参数,我在本文最前面列出了外部网络地址等信息):

# openstack subnet create --network provider   --allocation-pool start=192.168.0.10,end=192.168.0.50   --dns-nameserver 61.139.2.69 --gateway 192.168.0.1   --subnet-range 192.168.0.0/24 provider

 

4 计算节点配置

4.1 服务配置

a) 安装软件包

# yum install openstack-neutron-linuxbridge ebtables ipsec

b)编辑网络服务配置文件/etc/neutron/neutron.conf

[DEFAULT]节点:

[DEFAULT]
# ...
transport_url = rabbit://openstack:rabbitpass@controller
auth_strategy = keystone

[keystone_authtoken]节点:

[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = g_service username = neutron password = npass

[oslo_concurrency]节点:

[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

4.2 网络配置

a)配置linux桥接代理

编辑配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
#配置桥接的物理网卡,在这里我的第二个网卡是ens37,第一个网卡用于管理网络
physical_interface_mappings = provider:ens37

[vxlan]
#禁止xvxlan模式
enable_vxlan = false

[securitygroup]
# 开启安全组,配置防火墙驱动
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

b)完成配置后,需要像之前2.2 e)节点一样检查br_netfilter模块是否正常。

4.3 配置计算服务使用网络服务

编辑计算服务配置文件/etc/nova/nova.conf

[neutron]节点:

[neutron]
# ...
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = g_service
username = neutron
password = npass

4.4 配置服务状态

# systemctl restart openstack-nova-compute    //重启nova服务
# systemctl enable --now neutron-linuxbridge-agent    //设置网桥代理服务状态

5 验证

列出网络代理,应该有3个控制节点上的代理,一个计算节点的代理(在控制节点运行该命令):

# openstack network agent list