Mô tả:
Tính năng DVR trong Neutron
1. Giới thiệu về DVR
Đối với mô hình multi node thuần túy việc tạo ra tenant và Router để nối mạng trong ra mạng
ngoài khi đó tất cả Router được tạo ra sẽ nằm trên node Network, và khi traffic từ VM đi ra
mạng ngoài hoặc VM giữa các tenant với nhau sẽ phải đi qua Router nằm trên node Network.
Hình 1: Các Router tập chung tại node Network
Bài toán đặt ra khi có nhiều VM trên hệ thống thì tất cả các traffic của VM đều phải đi vào
Router trên node Netowork, lúc đó sẽ gây hiện tượng thắt cổ chai và node Network cũng phải
xử lý rất nhiều các traffic của các VM trong hệ thống, để giải quyết bài toán này project
Neutron từ bản Juno có thêm tính năng DVR ( Distributed Virtual Router). Đó là tính năng
thay vì tập chung Router trên node Network thì Router sẽ được phân bố ra các node Compute
để các Router đó xử lý luồng traffic của những VM nằm chính trên node Compute đó.
Cụ thể nếu các bạn muốn xem chi tiết về tính năng DVR tại link sau:
http://docs.openstack.org/networking-guide/deploy_scenario2.html
Page | 1
Hình 2: Các Router phân bố tại các node Compute
2. Quá trình cài đặt với mô hình 3 node
a. Các Service trong các Node
(nguồn: http://docs.openstack.org/networking-guide/scenario_dvr_ovs.html)
Page | 2
Hình 3: Các thành phần của Neutron cần phải có trên các node khi triển khai tính
năng DVR
b. Các bước cài đặt
Kịch bản: Các bạn đang có một hệ thống OPS đang chạy và tiến hành cấu hình để có
tính năng DVR cho hệ thống.
b.1. Trên node Controller
Bước 1: Cấu hình cho kernel. Sửa file /etc/sysctl.conf
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
Bước 2: Thêm các dòng sau vào file /etc/neutron/neutron.conf:
[DEFAULT]
router_distributed = True
allow_automatic_l3agent_failover = True
Bước 3: Thêm các dòng sau vào file /etc/neutron/plugins/ml2
[ml2]
mechanism_drivers = openvswitch,l2population
b.2 Trên node Network
Bước 1: Thêm các dòng sau vào file /etc/neutron/neutron.conf
[DEFAULT]
router_distributed = True
allow_automatic_l3agent_failover = True
Bước 2: Thêm dòng sau vào file /etc/neutron/l3_agent.ini
agent_mode = dvr_snat
Bước 3: Thêm dòng sau vào file /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
mechanism_drivers = openvswitch,l2population
[agent]
enable_distributed_routing = True
arp_responder = True
Page | 3
l2_population = True
Bước 4: Thêm dòng sau vào file /etc/neutron/l3_agent.ini
agent_mode = dvr_snat
b.3. Trên node Compute
Các bạn lưu ý khi hệ thống của bạn không sử dụng tính năng DVR thì mặc định node
Compute sẽ không có l3-agent và metadata nên bạn cần cài các thành phần này vào
node Compute.
apt-get install –y neutron-l3-agent
Bước 1: Cấu hình cho kernel. Sửa file /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
Bước 2: Thêm các dòng sau vào file /etc/neutron/neutron.conf
[DEFAULT]
router_distributed = True
allow_automatic_l3agent_failover = True
Bước 3: Thêm các dòng sau vào file /etc/neutron/l3_agent.ini
[DEFAULT]
verbose = True
interface_driver =
neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge =
router_delete_namespaces = True
agent_mode = dvr_snat
use_namespaces = True
Bước 4: Thêm các dòng sau vào file
/etc/neutron/plugins/ml2/ml2_conf.ini
Page | 4
[ml2]
mechanism_drivers = openvswitch,l2population
[agent]
enable_distributed_routing = True
arp_responder = True
l2_population = True
Bước 5: Đối với file metada các bạn chỉ cần copy nội dung của file
metadata_agent.ini của node Network
Bước 6: Lúc này file /etc/network/interface và tạo ra các switch br-ex bạn cũng phải
làm tương tự như trên node Network
Sau khi cài đặt xong tính năng DVR thì khi tạo Router bạn cũng có thể chọn cho
Router đó có sử dụng tính năng DVR hay không
3. Thử nghiệm phần hiệu năng mạng
Kịch bản test: Trong cùng một môi trường ta sẽ kiểm tra phần băng thông trong trường hợp
có tính năng DVR và không có tính năng DVR
1500
450
50
45
60
53
Có DVR
500
380
Không DVR
Nhận xét:
Page | 5
Từ bảng kết quả thu được trong bài LAB tôi rút ra một số nhận xét sau:
-
-
Sự khác biệt nhất ở đây là kết quả bandwidth trong trường hợp VM đến VM khác tenant
và trong cùng một node Compute và khác node. Đúng như theo lý thuyết khi có tính năng
DVR thì các Router khi chúng ta tạo ra sẽ được tạo trên tất cả các node Network và
Compute. Những Router này sẽ làm nhiệm vụ định tuyến các tenant với nhau. Trước đây
chưa có tính năng DVR khi truyền thông giữa các VM khác tenant mà trong cùng một
node thì vẫn phải gửi đến node Network để định tuyến các tenant, khi có DVR thì các gói
tin sẽ được định tuyến ngay tại node Compute đó mà không cần qua node Network nên
đạt được băng thông lớn rất nhiều.
Vậy theo quan điểm cá nhân của tôi thì tính năng DVR ra đời giải quyết bài toán luồng
traffic giữa các VM-VM và giúp giảm tải cho node Network, tránh hiện tượng nghẽn cổ
chai.
Page | 6
- Xem thêm -