1. 程式人生 > >openstack newton Linuxbridge改ovs並配置dvr

openstack newton Linuxbridge改ovs並配置dvr


這幾天一直在搞dvr,現在終於搞好了。網上的資料比較雜亂,期間也一直在各種嘗試,步驟也很繁瑣而且混亂,坑比較多,現在整理一下。

官方安裝文件從前幾個版本開始在 配置網路的時候就由ovs改成了Linuxbridge,原因有很多,這裡不討論。我是按照官方文件進行部署的,自然使用的是Linuxbridge。DVR中文名叫分散式路由,可以在計算節點實現東西向流量的轉發,不用再繞道控制節點(從M版開始網路節點併入了控制節點),這樣就能夠減輕控制節點的負載。有資料顯示DVR只能部署在ovs上,而且我在網路上看到的所有關於DVR部署的文件都是基於ovs的,所有我必須將Linuxbridge換成ovs。

先說一下我的openstack環境狀況:一個控制節點,兩個計算節點,控制節點的第一塊網絡卡IP地址為192.168.1.51,用作管理網,第二塊網絡卡無IP地址,作為provider網路,負責與外網通訊。計算節點1的第一塊網絡卡IP地址為192.168.1.71,連線管理網。計算節點2的第一塊網絡卡IP地址為192.168.1.72,連線管理網。我使用的是self-service網路。系統是Ubuntu16.04,所有安裝步驟都是按照N版官方文件進行的。

如果你已經安裝了Linuxbridge,那麼需要先解除安裝Linuxbridge

# apt purge neutron-Linuxbridge-agent

然後在資料庫中刪除neutron資料庫

mysql> DROP DATABASE neutron;

一、下邊是N版安裝ovs的步驟:

1、在網路節點上

首先進入資料庫

# mysql -u root -p

然後建立neutron資料庫

mysql> CREATE DATABASE neutron;

給資料庫賦權

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
你自己選一個合適的密碼替換NEUTRON_DBPASS

注意,為了簡單起見,我的所有的密碼都是123456

使用admin credentials

# . admin-openrc

建立service credentials

# openstack user create --domain default --password-prompt neutron
# openstack role add --project service --user neutron admin
# openstack service create --name neutron --description "OpenStack Networking" network

建立Networking service API endpoints

# 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

安裝元件

# apt install neutron-server neutron-plugin-ml2 neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent neutron-openvswitch-agent

/etc/neutron/neutron.conf配置如下

[DEFAULT]
rpc_backend = rabbit
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
transport_url = rabbit://openstack:[email protected]
auth_strategy = keystone
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
[database]
connection = mysql+pymysql://neutron:[email protected]/neutron
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = 123456
[nova]
auth_url = http://controller:35357
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = nova
password = 123456
[oslo_messaging_rabbit]
rabbit_host = 192.168.1.51
rabbit_userid = openstack
rabbit_password = 123456

/etc/neutron/plugins/ml2/ml2_conf.ini配置如下

[ml2]
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[ml2_type_vxlan]
vni_ranges = 1:1000
[securitygroup]
enable_ipset = True

/etc/nova/nova.conf配置如下

[DEFAULT]
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
state_path=/var/lib/nova
force_dhcp_release=True
verbose=True
ec2_private_dns_show_ip=True
enabled_apis=osapi_compute,metadata
transport_url = rabbit://openstack:[email protected]
auth_strategy = keystone
my_ip = 192.168.1.51
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[database]
connection = mysql+pymysql://nova:[email protected]/nova
[api_database]
connection = mysql+pymysql://nova:[email protected]/nova_api
[oslo_concurrency]
lock_path=/var/lock/nova
[libvirt]
use_virtio_for_bridges=True
[wsgi]
api_paste_config=/etc/nova/api-paste.ini
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = 123456
[vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = neutron
password = 123456
service_metadata_proxy = True
metadata_proxy_shared_secret = 123456

/etc/neutron/plugins/ml2/openvswitch_agent.ini配置如下

[agent]
tunnel_types = vxlan
l2_population = True
prevent_arp_spoofing = True
[ovs]
local_ip = 192.168.1.51
bridge_mappings = provider:br-ex
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

/etc/neutron/l3_agent.ini配置如下

[DEFAULT]
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge =

/etc/neutron/dhcp_agent.ini配置如下

[DEFAULT]
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True

/etc/neutron/metadata_agent.ini配置如下

[DEFAULT]
nova_metadata_ip = 192.168.1.51
metadata_proxy_shared_secret = 123456

同步資料庫

# 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

重啟服務

# service nova-api restart
# service neutron-server restart
# service openvswitch-switch restart
# service neutron-openvswitch-agent restart
# service neutron-dhcp-agent restart
# service neutron-metadata-agent restart
# service neutron-l3-agent restart

新建一個外部網路橋接

# ovs-vsctl add-br br-ex

將外部網路橋接對映到網絡卡,這裡我的第二塊網絡卡是連線外網的

ovs-vsctl add-port br-ex eno2

再次重啟服務

# service nova-api restart
# service neutron-server restart
# service openvswitch-switch restart
# service neutron-openvswitch-agent restart
# service neutron-dhcp-agent restart
# service neutron-metadata-agent restart
# service neutron-l3-agent restart

2、在計算節點上(以計算節點1為例)

在/etc/sysctl.conf中新增

net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1

然後使之生效

# sysctl -p

安裝元件

# apt-get install -y neutron-openvswitch-agent

/etc/neutron/neutron.conf配置如下

[DEFAULT]
rpc_backend = rabbit
transport_url = rabbit://openstack:[email protected]
auth_strategy = keystone
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = 123456
[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = 123456

/etc/neutron/plugins/ml2/openvswitch_agent.ini配置如下

[agent]
tunnel_types = vxlan
l2_population = True
prevent_arp_spoofing = True
[ovs]
local_ip = 192.168.1.71
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

/etc/nova/nova.conf配置如下

[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = Default
user_domain_name = Default
region_name = RegionOne
project_name = service
username = neutron
password = 123456

完成上述配置之後,重啟計算服務

# service nova-compute restart

然後重啟ovs

# service openvswitch-switch restart
# service neutron-openvswitch-agent restart

至此全部配置完成,在控制節點上檢視網路服務是否正常

# openstack network agent list

如果配置正常,那麼控制節點上的neutron-metadata-agent、neutron-openvswitch-agent、neutron-l3-agent、neutron-dhcp-agent,計算節點上的neutron-openvswitch-agent應該是正常工作的

二、配置DVR

在完成ovs的配置之後,可以進行DVR的配置

1、在控制節點上

在/etc/neutron/neutron.conf中相應模組加入下列內容

[DEFAULT]
l3_ha = True
router_distributed = True

在/etc/neutron/plugins/ml2/ml2_conf.ini中相應模組加入下列內容

[agent]
l2_population = True
enable_distributed_routing = True
arp_responder = True

在/etc/neutron/l3_agent.ini中相應模組加入下列內容

[DEFAULT]
ha_vrrp_auth_password = password
agent_mode = dvr_snat

配置完成後重啟服務

# service nova-api restart
# service openvswitch-switch restart
# service neutron-openvswitch-agent restart
# service neutron-l3-agent restart
# service neutron-dhcp-agent restart
# service neutron-metadata-agent restart

2、在計算節點上(以計算節點1為例)

編輯/etc/sysctl.conf,修改為

net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1

然後載入配置

# sysctl -p

在計算節點上安裝相關服務

# apt-get install neutron-l3-agent  neutron-metadata-agent neutron-plugin-ml2

在/etc/neutron/plugins/ml2/ml2_conf.ini中相應模組加入下列內容

[ml2]
mechanism_drivers = openvswitch,l2population
[securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
[ovs]
local_ip = 192.168.1.71
bridge_mappings = external:br-ex
[agent]
l2_population = True
tunnel_types = vxlan
enable_distributed_routing = True
arp_responder = True

在/etc/neutron/l3_agent.ini中相應模組加入下列內容

[DEFAULT]
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge =
agent_mode = dvr

在/etc/neutron/metadata_agent.ini中相應模組加入下列內容

[DEFAULT]
auth_uri = http://192.168.1.51:5000
auth_url = http://192.168.1.51:35357
auth_region = RegionOne
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = 123456
nova_metadata_ip = 192.168.1.51
metadata_proxy_shared_secret = 123456

重啟服務

# service nova-compute restart
# service openvswitch-switch restart
# service neutron-openvswitch-agent restart
# service neutron-l3-agent restart
# service neutron-metadata-agent restart

至此DVR配置完畢,大家可以在同一個計算節點的不同網路起兩個例項,通過分散式路由連線它們,用tcpdump監聽分散式路由的埠和計算節點的網絡卡,當兩個例項通訊的時候你會發現分散式路由的埠上監測到了流量,而計算節點的網絡卡上沒有流量產生。


openstack包含的內容非常多,我可能連皮毛都沒摸到,需要學習的還有非常多,希望今後能與各位一同進步。文章中可能存在不足,歡迎大家指正。

參考

https://docs.openstack.org/newton/install-guide-ubuntu/neutron-controller-install.html

https://docs.openstack.org/newton/install-guide-ubuntu/neutron-compute-install.html

https://kairen.gitbooks.io/openstack-ubuntu-newton/content/ubuntu-binary/neutron/

OpenStack

相關推薦

openstack newton Linuxbridgeovs配置dvr

這幾天一直在搞dvr,現在終於搞好了。網上的資料比較雜亂,期間也一直在各種嘗試,步驟也很繁瑣而且混亂,坑比較多,現在整理一下。 官方安裝文件從前幾個版本開始在 配置網路的時候就由ovs改成了Linuxbridge,原因有很多,這裡不討論。我是按照官方文件進行部署的,自然使

openstack newton 配置glusterfs 作cinder backend

glusterfs cinder newton 一、搭建gluster1、節點準備hostnameip數據盤vdbg0192.168.10.1010Gg1192.168.10.1110Gg2192.168.10.1210G2、安裝glusterfsyum install centos-releas

OpenStack Newton版本部署 ---- 環境配置

OpenStack Newton版本部署 ----環境配置 1、主機網路 (1)關閉防火牆 關閉系統防火牆: #systemctldisablememcached.service #systemctl stop memcached.service (2)主機名及對應ip 主機名   

安裝配置Apache

事物 服務器軟件 命令行 painter 阿帕奇 存在 httpd 推薦 還需要 從今天開始,我將開始Web開發的學習。本系列博客將陸續記錄我學習過程中的收獲和困惑,從前端到後端,一探Web開發的流程和內容。我目前掌握的有C/C++,有一些使用C進行嵌入式開發的經驗

Git使用:Linux(Ubuntu 14.04 x64)下安裝GIt配置連接GitHub

成功 ger 版本 style sts via xxxxxxxx apt 安裝 github是一個非常好的網絡代碼托管倉庫,知曉許久,但是一直沒有用起來,最近才開始使用git管理自己的文檔和代碼。 Git是非常強大的版本管理工具,今天就告訴大家,如何在Linux下安裝GIt

Win10安裝Mongodb,配置成服務

append 配置文件 log 模式 日誌文件 文件夾 sta fig clas 好吧,今天突然發現新買的surface上沒有安裝mongodb,然後想著安裝一下,順便記錄一下,雖說安裝過程很簡單 一:下載安裝,然後拷貝到C盤根目錄,這個就不多說了,比QQ都簡單。 二:把b

[大數據]-Logstash-5.3.1的安裝導入數據到Elasticsearch5.3.1配置同義詞過濾

cat 3.1 send text 開啟 gui 插件 work message 閱讀此文請先閱讀上文:[大數據]-Elasticsearch5.3.1 IK分詞,同義詞/聯想搜索設置,前面介紹了ES,Kibana5.3.1的安裝配置,以及IK分詞的安裝和同義詞設置,這裏主

[大數據]-Fscrawler導入文件(txt,html,pdf,worf...)到Elasticsearch5.3.1配置同義詞過濾

app alt pil 所在 word jar包 raw 文件名 包含 fscrawler是ES的一個文件導入插件,只需要簡單的配置就可以實現將本地文件系統的文件導入到ES中進行檢索,同時支持豐富的文件格式(txt.pdf,html,word...)等等。下面詳細介紹下fs

centos 7配置靜態IP,配置DNS

emctl 文件 網卡 管理器 sco auto .html b2b 進行 centos 7配置靜態IP,並配置DNS cd /etc/sysconfig/network-scripts/找到對應的網卡配置並編輯 vim ifcfg-eno16777736配置eno-167

Windows Server 2003安裝IIS服務配置WEB站點

程序 admin server 訪問網站 targe 詳細 window 知識 兩個 一、安裝IIS服務 簡介 IIS(Internet Information Server,互聯網信息服務)是一種Web(網頁)服務組件,其中包括Web服務器、FTP服務器、NNTP

在Ubuntu 16.04安裝 Let’s Encrypt配置ssl

lan 域名 rtb blank cert org 配置 pac 安裝配置 1.安裝前準備 1)要確保python的默認版本為2.7及以上版本。 2)需要配置的apache、nginx需要提前配置綁定域名。 2.安裝ssl 在這個https://certbot.eff.or

Linux下安裝Python3的django配置mysql作為django默認數據庫(轉載)

make lba del log pri ica www src rim 我的操作系統為centos6.5 1 首先選擇django要使用什麽數據庫。django1.10默認數據庫為sqlite3,本人想使用mysql數據庫,但為了測試方便順便要安裝一下sqlite開發

linux下安裝redis配置

ext find 客戶 bin extract write sometimes group gin redis官網上給出了安裝步驟,這裏做一下總結。 1、Download, extract and compile Redis with: wget http://downl

【轉載】centos7 關閉firewall防火墻指令以及更換安裝iptables配置

ref stat con bsp comm 關閉 art output lis 轉載連接 http://ashui.net/archives/2015/943.html 一、配置防火墻,開啟80端口、3306端口 CentOS 7.0默認使用的是firewall作為防火

WIN7 64位系統安裝JDK配置環境變量

自己 驗證 下載 存放位置 platform gre jpg 高級 win7 64 1、首先,下載JDK安裝包,到官網http://www.oracle.com/technetwork/java/javase/downloads/index.html進行下載,點左邊的Jav

centos6.5中部署Zeppelin配置賬號密碼驗證

oop nbsp 開啟 art 變量 jdk 1.7 技術 apache 使用 centos6.5中部署Zeppelin並配置賬號密碼驗證1.安裝JavaZeppelin支持的操作系統如下圖所示。在安裝Zeppelin之前,你需要在部署的服務器上安裝Oracle JDK 1

lnmp 安裝FTP服務 配置FTP用戶

image pureftpd col 顯示 pan code nmp 成功 ref lnmp 默認是不帶FTP服務的,需要的童鞋要自行安裝.步驟也很簡單 一,進入lnmp目錄,找到pureftpd.sh 二,直接運行該腳本 ./pureftpd.sh

centos7 關閉firewall安裝iptables配置

sysconfig 關閉selinux 配置文件 設置 wid linux state accep res 一、配置防火墻,開啟80端口、3306端口 CentOS 7.0默認使用的是firewall作為防火墻,這裏改為iptables防火墻。

Ubuntu16.04.3安裝配置samba方法

get valid 服務 install 用戶目錄 conf smbpasswd 支持 osc 目的:單個Linux用戶可以在windows電腦上通過映射網絡驅動器的方式來訪問自己的工作目錄。 方法如下: 1、安裝smb服務器:apt-get install samba2、

php源碼安裝,配置apache支持php

cannot .html openssl director link sql html ech rod 一、php安裝準備環境 yum install zlib libxml libjpeg freetype libpng gd curl libiconv zlib-de