OpenStack 网络使用的是一个 SDN(Software Defined Networking)组件,即 Neutron,SDN 是一个可插拔的架构,支持插入交换机、防火墙、负载均
衡器等,这些都定义在软件中,从而实现对整个云基础设施的精细化管控。
前期规划,将 ens33 网口作为外部网络(在 Openstack 术语中,外部网络常被称之为 Provider 网络),同时也用作管理网络,便于测试访问,生产环境
建议分开;ens35 网络作为租户网络,即 vxlan 网络;ens36 作为 ceph 集群网络。
OpenStack 网络部署方式可选的有 OVS 和 LinuxBridge。此处选择 LinuxBridge 模式,部署大同小异。
在控制节点上要启动的服务 neutron-server.service
neutron-linuxbridge-agent.service
neutron-dhcp-agent.service
neutron-metadata-agent.service
neutron-l3-agent.service1、登录数据库创建 neutron 数据库
MariaDB (none)> CREATE DATABASE neutron default character set utf8;
创建并授予 neutron 用户完全操作 neutron 库权限
MariaDB (none)> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'openstack';
MariaDB (none)> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'openstack';
2、创建用户和 API 服务端点
# source /etc/keystone/admin-openrc.sh
创建 Neutron 用户,密码设置为 openstack2022
openstack user create --domain default --password openstack2022 neutron
/*
说明:使用 --password openstack2022 neutron 是非交互式方式,而 --password-prompt 是交互式,需要在窗口输入 2 次密码确认
*/
将 neutron 加入到 service 项目以及 admin 角色
# openstack role add --project service --user neutron admin
创建 Neutron 服务实体。
# openstack service create --name neutron --description "OpenStack Networking" network
创建 Neutron 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




3、安装配置 Neutron
采用 Provider-LinuxBridge 模式
# yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
修改配置文件/etc/neutron/neutron.conf
# cd /etc/neutron/ && mv neutron.conf neutron.conf.source && cat neutron.conf.source |grep -Ev "^#|^$" > neutron.conf && chown root:neutron neutron.conf
# vi /etc/neutron/neutron.conf
修改DEFAULT部分,增加如下配置
DEFAULT
# 启用 Modular Layer 2 (ML2)插件
core_plugin = ml2
# service_plugins 默认为空,如果值是 router 表示支持路由模式,即 vxlan
service_plugins = router
transport_url = rabbit://openstack:openstack@controller
# 设置验证策略
auth_strategy = keystone
# 通知计算节点的网络拓扑变化
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
allow_overlapping_ips = true
修改database部分,配置数据库访问。
database
connection = mysql+pymysql://neutron:openstack@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 = service
username = neutron
password = openstack2022
token_cache_time=3600
增加nova部分,通知计算节点网络拓扑变化
nova
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = openstack2022
说明:配置文件中默认没有该模块,需要新增
修改oslo_concurrency部分,配置锁定路径。
oslo_concurrency
lock_path = /var/lib/neutron/tmp




修改 ML2 插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
参考:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option2.html
# cd /etc/neutron/plugins/ml2 && mv ml2_conf.ini ml2_conf.ini.source && cat ml2_conf.ini.source |grep -Ev "^#|^$" > ml2_conf.ini && chown root:neutron ml2_conf.ini
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
启用 flat 和 vlan、vxlan 网络,需要新增加 ml2、ml2_type_flat、ml2_type_vxlan和securitygroup配置
增加ml2部分,配置支持 vxlan
ml2
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
增加ml2_type_flat部分,将 provider 配置为 flat 网络
ml2_type_flat
flat_networks = provider
增加ml2_type_vlan部分,将 vlan 配置为 flat 网络
ml2_type_vlan
network_vlan_ranges = provider
增加ml2_type_vxlan部分,配置 vxlan 网络识别的网络范围
ml2_type_vxlan
# 取值范围 1-16777215
vni_ranges = 1:3000
增加securitygroup部分,启用 ipset 提高安全效率。
securitygroup
enable_ipset = true


修改/etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,配置 Linux 桥代理
# cd /etc/neutron/plugins/ml2 && mv linuxbridge_agent.ini linuxbridge_agent.ini.source && cat linuxbridge_agent.ini.source |grep -Ev "^#|^$" > linuxbridge_agent.ini && chown root:neutron linuxbridge_agent.ini
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
增加linux_bridge部分,将 Provider 虚拟网络映射到物理网络(能与外网通信的网段)
linux_bridge
physical_interface_mappings = provider:ens33
增加vxlan部分,启用 vxlan 叠加网络
vxlan
# 如果要禁用 vxlan,则设置为 false,同时注释 local_ip 和 l2_population
enable_vxlan = true
# 每个(控制和计算)节点都要添加一个网卡,给 vxlan 专用,并且要配置 IP 地址(不需要配置网关,配置 IP 后,各节点可以使用对应 IP ping 通)
local_ip = 10.16.10.11
l2_population = true
增加securitygroup部分,启用安全组并配置 LinuxBridge iptables 驱动。
securitygroup
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
/*
说明:local_ip 要修改成控制节点/计算节点实际用于 vxlan IP。 provider 网络使用的是 ens33 网口,部署时根据实际情况调整,provider 网络可以理解为能与外部互联网相通的网络,后面在创建 Flat 类型网络时
--provider-physical-network 要指定是 provider。
*/
修改内核配置文件/etc/sysctl.conf,确保系统内核支持网桥过滤器
# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
执行以下命令,添加网桥过滤器,并设置开机加载
# modprobe br_netfilter
# sysctl -p
# sed -i '$amodprobe br_netfilter' /etc/rc.local
# chmod +x /etc/rc.d/rc.local



修改/etc/neutron/dhcp_agent.ini 文件,配置 DHCP 代理
# cd /etc/neutron/ && mv dhcp_agent.ini dhcp_agent.ini.source && cat dhcp_agent.ini.source |grep -Ev "^#|^$" > dhcp_agent.ini && chown root:neutron dhcp_agent.ini
# vi /etc/neutron/dhcp_agent.ini
在DEFAULT部分,配置 Linuxbridge 驱动接口,DHCP 驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
DEFAULT
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
修改/etc/neutron/metadata_agent.ini 文件,配置元数据代理
# cd /etc/neutron/ && mv metadata_agent.ini metadata_agent.ini.source && cat metadata_agent.ini.source |grep -Ev "^#|^$" > metadata_agent.ini && chown root:neutron metadata_agent.ini
# vi /etc/neutron/metadata_agent.ini
在DEFAULT部分,配置元数据主机和共享秘钥
DEFAULT
nova_metadata_host = controller
metadata_proxy_shared_secret = openstack2022
修改/etc/neutron/l3_agent.ini 文件,配置 layer-3 代理
# cd /etc/neutron/ && mv l3_agent.ini l3_agent.ini.source && cat l3_agent.ini.source |grep -Ev "^#|^$" > l3_agent.ini && chown root:neutron l3_agent.ini
# vi /etc/neutron/l3_agent.ini
在DEFAULT部分,配置 Linuxbridge 接口驱动和外部网络网桥
DEFAULT
interface_driver = linuxbridge
external_network_bridge =


配置计算服务以使用 Neutron 网络(此步可以放到安装并配置 nova) (前提:已经安装了 nova 服务)
yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
# cd /etc/nova/ && mv nova.conf nova.conf.source && cat nova.conf.source |grep -Ev "^#|^$" > nova.conf && chown root:nova nova.conf
# vi /etc/nova/nova.conf
在neutron部分,配置访问参数
neutron
url = http://controller:9696
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = openstack2022
service_metadata_proxy = true
metadata_proxy_shared_secret = openstack2022

4、初始化创建网络
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
5、同步 neutron 数据库
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
6、启动 neutron 各服务并设置为开机自启动
# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
# systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
# systemctl status neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service



1、安装组件,由于 neutron 和 nova 之间有相互调用配置,此处将计算服务一并安装
# yum -y install openstack-nova-compute
# yum -y install openstack-neutron-linuxbridge ebtables ipset
2、修改配置文件/etc/neutron/neutron.conf
# cd /etc/neutron/ && mv neutron.conf neutron.conf.source && cat neutron.conf.source |grep -Ev "^#|^$" > neutron.conf && chown root:neutron neutron.conf
# vi /etc/neutron/neutron.conf
在DEFAULT部分,配置 RabbitMQ 消息队列访问。
DEFAULT
transport_url = rabbit://openstack:openstack@controller
在DEFAULT部分,配置身份认证服务
DEFAULT
auth_strategy = keystone
database
connection = mysql+pymysql://neutron:openstack@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 = service
username = neutron
password = openstack2022
token_cache_time=3600
在oslo_concurrency部分,配置锁定路径
oslo_concurrency
lock_path = /var/lib/neutron/tmp

3、修改配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini
为实例建立 layer-2 虚拟网络并且处理安全组规则,并将 Flat 网络和外部物理业务网络接口对应起来
# cd /etc/neutron/plugins/ml2 && mv linuxbridge_agent.ini linuxbridge_agent.ini.source && cat linuxbridge_agent.ini.source |grep -Ev "^#|^$" > linuxbridge_agent.ini && chown root:neutron linuxbridge_agent.ini
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
linux_bridge
physical_interface_mappings = provider:ens33
vxlan
enable_vxlan = true
local_ip = 10.16.10.12
l2_population = true
securitygroup
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = True

说明:local_ip 要修改成计算节点实际用于 vxlan IP。 provider 网络使用的是 ens33 网口,部署时根据实际情况调整,provider 网络可以理解为能与外部互联网相通的网络,后面在创建 Flat 类型网络时物理
网络 --provider-physical-network 要指定是 provider。4、修改内核配置文件/etc/sysctl.conf,确保系统内核支持网桥过滤器
# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
执行以下命令,添加网桥过滤器,并设置开机加载
# modprobe br_netfilter
# sysctl -p
# sed -i '$amodprobe br_netfilter' /etc/rc.local
# chmod +x /etc/rc.d/rc.local
5、启动 neutron-linuxbridge-agent 服务并设置开机自启动
# systemctl enable neutron-linuxbridge-agent.service && systemctl restart neutron-linuxbridge-agent.service
6、将上述 1-5 步在计算节点 compute02 上执行一次或者使用以下步骤
a、安装组件
# yum -y install openstack-nova-compute
# yum -y install openstack-neutron-linuxbridge ebtables ipset
b、在计算节点 compute01 上直接拷贝配置文件到 compute02 上
# scp /etc/neutron/neutron.conf root@compute02:/etc/neutron/
# scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini root@compute02:/etc/neutron/plugins/ml2/
# scp /etc/sysctl.conf root@compute02:/etc
c、在 compute02 上操作
# sed -i 's/10.12/10.13/g' /etc/neutron/plugins/ml2/linuxbridge_agent.ini
# modprobe br_netfilter
# sysctl -p
# sed -i '$amodprobe br_netfilter' /etc/rc.local
# chmod +x /etc/rc.d/rc.local
d、启动 neutron-linuxbridge-agent 服务并设置开机自启动
# systemctl enable neutron-linuxbridge-agent.service
# systemctl restart neutron-linuxbridge-agent.service

三、验证 Neutron
在控制节点执行以下操作进行验证。
# source /etc/keystone/admin-openrc.sh
1、列出成功启动的 Neutron 代理
# openstack network agent list
!image.png(https://cdn.nlark.com/yuque/0/2022/png/2549257/1650251215368-6c33a12a-2f99-4085-9322-f78c269adcf6.png#clientId=u74939567-8814-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=251&id=ubf9b0cd7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=628&originWidth=3009&originalType=binary&ratio=1&rotation=0&showTitle=false&size=181229&status=done&style=none&taskId=u79515c82-c1a7-4f59-b71f-dee2ccc41c4&title=&width=1203.6)
2、创建一个 Flat 网络
# openstack network create --share --external --provider-network-type flat public --provider-physical-network provider

说明:在 linuxbridge_agent.ini 文件中的 physical_interface_mappings = provider:ens33,所以当前创建的 flat 类型的物理网络
--provider-physical-network 要指定为 provider创建子网
在类型为 Flat 名称为 public 网络下创建子网
# openstack subnet create --network public \
--allocation-pool start=172.16.10.100,end=172.16.10.240 \
--dns-nameserver 223.5.5.5 \
--gateway 172.16.10.2 \
--subnet-range 172.16.10.0/24 subnet_172.16.10

创建网络接口
# openstack port create --network public --fixed-ip subnet=subnet_172.16.10 ip-address=172.16.10.110

查看网络
# openstack network list
查看子网
# openstack subnet list
查看网络接口
# openstack port list
删除网络
# openstack port delete ip-address=172.16.10.110
# openstack subnet delete subnet_172.16.10
# openstack network delete public
说明:删除网络前,要先后顺序删除,即先要删除子网下的网络接口-->删除子网-->删除网络
删掉之后要从新创建
# openstack network create --share --external --provider-network-type flat public --provider-physical-network provider
# openstack subnet create --network public \
--allocation-pool start=172.16.10.100,end=172.16.10.240 \
--dns-nameserver 223.5.5.5 \
--gateway 172.16.10.2 \
--subnet-range 172.16.10.0/24 subnet_172.16.10
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
当我执行>rvminstall1.9.2时一切顺利。然后我做>rvmuse1.9.2也很顺利。但是当涉及到ruby-v时..sam@sjones:~$rvminstall1.9.2/home/sam/.rvm/rubies/ruby-1.9.2-p136,thismaytakeawhiledependingonyourcpu(s)...ruby-1.9.2-p136-#fetchingruby-1.9.2-p136-#downloadingruby-1.9.2-p136,thismaytakeawhiledependingonyourconnection...%Total%Rece