Load Balancing-as-a-Service (LBaaS) with octavia in openstack

Yashar Esmaildokht
Yashar Esmaildokhtgnu/linux system/network/security administrator & oracle dba à Manir

Load Balancing-as-a-Service (LBaaS) with octavia in openstack

‫حق‬ ‫بسمه‬
Load Balancing-as-a-Service (LBaaS) with
: ‫نویسنده‬
‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫مهندس‬
: ‫نسخه‬
0.1
Load Balancing-as-a-Service (LBaaS) with octavia in openstack
: ‫نویسنده‬ ‫درباره‬
‫رشته‬ ‫آموخته‬ ‫دانش‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫بنده‬
cyber security
. ‫هستم‬
‫از‬ ‫بیش‬
۱۵
. ‫دارم‬ ‫فعالیت‬ ‫سابقه‬ ‫سال‬
‫مولف‬ - ‫مدرس‬ - ‫مشاور‬ : ‫داد‬ ‫شرح‬ ‫زیر‬ ‫های‬ ‫ساختار‬ ‫در‬ ‫میتوان‬ ‫را‬ ‫بنده‬ ‫های‬ ‫فعالیت‬ ‫جمله‬ ‫از‬
gnu/linux system/network/security/cloud Engineer/administrator & oracle dba | Linux Trainer |devops
. (: ‫جدید‬ ‫دنیاهای‬ ‫کشف‬ ‫و‬ ‫تحقیق‬ ‫و‬ ‫مطالعه‬ ‫به‬ ‫مند‬ ‫علقه‬
. ‫کنم‬ ‫اشاره‬ ‫استراتژی‬ ‫های‬ ‫بازی‬ ‫و‬ ‫اوتلو‬ ‫و‬ ‫شطرنج‬ ‫بازی‬ ‫به‬ ‫میتوانم‬ ‫من‬ ‫های‬ ‫سرگرمی‬ ‫از‬ ‫واقع‬ ‫در‬
‫تبریز‬ ‫لگ‬ ‫گذاران‬ ‫بنیان‬ ‫از‬ ‫یکی‬ ‫و‬ ‫لینوکس‬/‫گنو‬ ‫و‬ ‫باز‬ ‫متن‬ ‫دنیای‬ ‫عاشق‬ . ‫هستم‬ ‫عاشق‬ ‫یک‬ ‫من‬
: ‫کنید‬ ‫پیدا‬ ‫و‬ ‫کنید‬ ‫دنبال‬ ‫را‬ ‫من‬ ‫میتوانید‬ ‫چطور‬ ‫خب‬
Mob : 09141100257
Telegram ID
Telegram channel
Instagram Account
Linkedin Account
. ‫بشنوم‬ ‫را‬ ‫انتقادتون‬ ‫یا‬ ‫پیشنهاد‬ ‫هرگونه‬ ‫میشم‬ ‫خوشحال‬ ‫همچنین‬
: ‫کنید‬ ‫پیدا‬ ‫را‬ ‫من‬ ‫از‬ ‫ی‬ ‫دیگر‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫چطور‬
‫توی‬
slideshare
. ‫کنید‬ ‫پیدا‬ ‫را‬ ‫کردم‬ ‫منتشر‬ ‫آزاد‬ ‫بصورت‬ ‫که‬ ‫دیگری‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫بگردید‬ ‫من‬ ‫اسم‬ ‫دنبال‬ ‫گوگل‬ ‫یا‬
‫این‬ ‫از‬ ‫میتوانید‬ ‫هم‬ ‫دونیت‬ ‫جهت‬
‫لینک‬
‫کنید‬ ‫استفاده‬
: ‫مشاوره‬
. ‫بود‬ ‫خواهم‬ ‫شما‬ ‫دسترس‬ ‫در‬ ‫من‬ . ‫فرمایید‬ ‫حاصل‬ ‫تماس‬ . ‫کردم‬ ‫اشاره‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫هایی‬ ‫کانال‬ ‫از‬ ‫میتوانید‬ ‫مشاوره‬ ‫جهت‬
: ‫به‬ ‫تقدیم‬
‫خدا‬
‫شتافت‬ ‫یاریم‬ ‫به‬ ‫که‬ ‫بود‬ ‫او‬ ‫تنها‬ ‫هایم‬ ‫سختی‬ ‫در‬ ‫که‬ ‫چرا‬
‫مادرم‬
‫اویم‬ ‫مدیون‬ ‫که‬ ‫را‬ ‫ححبت‬‫م‬ ‫و‬ ‫انسانیت‬ ‫داد‬ ‫یاد‬ ‫و‬ . ‫کرد‬ ‫تقدیم‬ ‫زندگی‬ ‫به‬ ‫مرا‬ ‫که‬ ‫چرا‬
‫پدرم‬
‫اویم‬ ‫مدیون‬ ‫و‬ ‫بود‬ ‫من‬ ‫حامی‬ ‫همیشه‬ ‫روحش‬ ‫که‬
‫عشقم‬
‫هست‬ ‫و‬ ‫بود‬ ‫مشوقم‬ ‫که‬
‫سورس‬ ‫اپن‬ ‫جامعه‬
‫بشریت‬
‫را‬ ‫هایش‬ ‫دانسته‬ ‫میکند‬ ‫منتشر‬ ‫و‬ ‫میخواند‬ ‫که‬ ‫او‬ ‫و‬
(: ‫هیچ‬ ‫دیگر‬ ‫و‬ ‫جهانی‬ ‫صلح‬ ‫امید‬ ‫به‬ ‫و‬
‫های‬ ‫سرور‬ ‫روی‬ ‫افزاری‬ ‫نرم‬ ‫ترافیک‬ ‫یا‬ ‫و‬ ‫شبکه‬ ‫بار‬ ‫توضیع‬
Cluster
‫تقسم‬ ‫پایداری‬ ‫و‬ ‫کیفیت‬ ‫افزایش‬ ‫و‬ ‫درخواست‬ ‫به‬ ‫پاسخ‬ ‫سازی‬ ‫بهینه‬ ‫جهت‬
‫یا‬ ‫بار‬
Load Balancing
‫بین‬ ‫بار‬ ‫تقسیم‬ ‫سیستم‬ ‫یا‬ ‫سرور‬ .‫میشود‬ ‫گفته‬
Client
‫و‬
Server Farm
‫نرم‬ ‫و‬ ‫شبکه‬ ‫های‬ ‫ترافیک‬ ‫و‬ ‫میگیرید‬ ‫قرار‬
‫بروز‬ ‫از‬ ‫ها‬ ‫سرور‬ ‫بین‬ ‫عمل‬ ‫این‬ ‫انجام‬ ‫با‬ ‫که‬ ‫میکند‬ ‫توضیع‬ ‫ها‬ ‫سرور‬ ‫بین‬ ‫گوناگون‬ ‫های‬ ‫متد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫افزار‬
Single Point Failure
.‫میشود‬ ‫جلوگیری‬
Load Balancing
‫برای‬ ‫معماری‬ ‫ترین‬ ‫کارامد‬ ‫و‬ ‫بهترین‬ ‫از‬ ‫یکی‬
Application server
.‫میباشد‬
‫در‬ ‫افزار‬ ‫نرم‬ ‫لودبالنسینگ‬ ، ‫دو‬ ‫و‬ ‫سه‬ ‫لیه‬ ‫در‬ ‫اینترنت‬ ‫خطوط‬ ‫لودبالنسینگ‬ ، ‫مثال‬ ‫برای‬ . ‫میکنند‬ ‫کار‬ ‫مختلفی‬ ‫های‬ ‫لیه‬ ‫در‬ ‫ها‬ ‫بالنسر‬ ‫لود‬
‫کنید‬ ‫فرض‬ ‫مثل‬ . ‫بشه‬ ‫شامل‬ ‫میتونه‬ ‫حتی‬ ‫هم‬ ‫رو‬ ‫اینترنت‬ ‫های‬ ‫لینک‬ ‫و‬ ‫نیست‬ ‫ها‬ ‫سرور‬ ‫به‬ ‫مختص‬ ‫تنها‬ ‫لودبالنسینگ‬ . ‫چهار‬ ‫و‬ ‫هفت‬ ‫لیه‬
. ‫اسیاتک‬ ‫دیگه‬ ‫خط‬ ‫و‬ ‫انلین‬ ‫پارس‬ ‫خط‬ ‫یه‬ ‫مثل‬ ، ‫کنید‬ ‫تهیه‬ ‫اینترنت‬ ‫مختلف‬ ‫خطوط‬ ‫میتونید‬ ، ‫هستید‬ ‫شرکت‬ ‫یک‬ ‫یا‬ ‫نت‬ ‫کافی‬ ‫یک‬ ‫صاحب‬
‫دیگه‬ ‫و‬ ‫کرد‬ ‫خواهد‬ ‫شدن‬ ‫توزیع‬ ‫به‬ ‫شروع‬ ‫اسیاتک‬ ، ‫شد‬ ‫مشکل‬ ‫دچار‬ ‫انلین‬ ‫پارس‬ ‫که‬ ‫هرموقع‬ ‫حال‬
SPF
. ‫داشت‬ ‫نخواهید‬
‫منابع‬ ‫مصرف‬ ‫و‬ ‫سرور‬ ‫درگیری‬ ‫که‬ ‫زمانی‬ ‫متد‬ ‫این‬ ‫اندازی‬ ‫راه‬ ‫با‬
Application
‫به‬ ‫را‬ ‫جدید‬ ‫های‬ ‫سرور‬ ‫راحتی‬ ‫به‬ ‫میتوان‬ ‫میرود‬ ‫بال‬
Server
Pool
‫جدید‬ ‫سرور‬ ‫شدن‬ ‫اضافه‬ ‫محض‬ ‫به‬ .‫کرد‬ ‫اضافه‬
Request
.‫شد‬ ‫خواهد‬ ‫توضیع‬ ‫نیز‬ ‫جدید‬ ‫سرور‬ ‫روی‬ ‫ترافیک‬ ‫و‬ ‫ها‬
‫وظایف‬ ‫بال‬ ‫توضیحات‬ ‫به‬ ‫توجه‬ ‫با‬
Load Balancer
‫بود‬ ‫خواهد‬ ‫زیر‬ ‫شرح‬ ‫به‬
:
•
‫های‬ ‫درخواست‬ ‫توضیع‬
Client
‫ها‬ ‫سرور‬ ‫بین‬ ‫موثر‬ ‫بصورت‬ ‫شبکه‬ ‫ترافیک‬ ‫یا‬ ‫و‬
•
‫درخواست‬ ‫فرستادن‬ ‫با‬ ‫اعتماد‬ ‫و‬ ‫کیفیت‬ ،‫سرویس‬ ‫پایداری‬ ‫از‬ ‫اطمینان‬
Client
‫دسترس‬ ‫در‬ ‫و‬ ‫فعال‬ ‫های‬ ‫سرور‬ ‫سمت‬ ‫به‬
•
‫نیاز‬ ‫صورت‬ ‫در‬ ‫سرور‬ ‫اضافه‬ ‫یا‬ ‫و‬ ‫حذف‬ ‫در‬ ‫پذیری‬ ‫انعطاف‬ ‫ارائه‬
‫مفهوم‬
Clustering
‫و‬
Distribute
‫یک‬ ‫تنها‬ ‫کاربر‬ ‫کلسترینگ‬ ‫در‬ . ‫هست‬ ‫بندی‬ ‫خوشه‬ ‫معنی‬ ‫به‬ ‫کلسترینگ‬
IP
‫سرور‬ ‫چندین‬ ‫قضیه‬ ‫این‬ ‫پشت‬ ‫که‬ ‫حالی‬ ‫در‬ ‫میکنه‬ ‫مشاهده‬ ‫رو‬
‫رو‬ ‫شما‬ ‫درخواست‬ ‫خودشون‬ ‫بین‬ ‫ها‬ ‫اون‬ ‫و‬ ‫باشه‬ ‫داشته‬ ‫وجود‬ ‫ممکنه‬
LB
‫میدن‬ ‫تحویل‬ ‫شما‬ ‫به‬ ‫پی‬ ‫ای‬ ‫ادرس‬ ‫یک‬ ‫قالب‬ ‫در‬ ‫رو‬ ‫نتیجه‬ ‫و‬ ‫میکنند‬
‫واژه‬ .
Distribute
‫درخواست‬ ‫کردن‬ ‫توزیع‬ : ‫مثال‬ . ‫میکنیم‬ ‫توزیع‬ ‫رو‬ ‫چیزی‬ ‫یک‬ ‫ها‬ ‫اون‬ ‫روی‬ ‫بعد‬ ‫و‬ ‫داریم‬ ‫مشخص‬ ‫چیز‬ ‫تا‬ ‫چند‬ ‫اینکه‬ ‫یعنی‬
‫روی‬ ‫یوزر‬ ‫های‬
LB
.
‫مفهوم‬
SPF
‫و‬
Redundancy
‫اصلح‬
SPF
‫یا‬
Single Point Of Failure
) ‫افزونگی‬ ‫شما‬ ‫که‬ ‫میشه‬ ‫استفاده‬ ‫زمانی‬
Redundancy
‫شبکه‬ ، ‫چیز‬ ‫اون‬ ‫شدن‬ ‫مختل‬ ‫با‬ ‫و‬ ‫ندارید‬ (
‫میشه‬ ‫این‬ ‫نباشه‬ ‫براش‬ ‫جایگزینی‬ ‫عامل‬ ‫و‬ ‫افته‬ ‫بی‬ ‫کار‬ ‫از‬ ‫روتر‬ ‫و‬ ‫دارید‬ ‫روتر‬ ‫یک‬ ‫اگر‬ ‫شبکه‬ ‫یک‬ ‫توی‬ : ‫مثال‬ . ‫میشه‬ ‫مشکل‬ ‫دچار‬ ‫شما‬
SPF
.
‫انواع‬
Load Balancing
‫ها‬
•
1
.
‫لیه‬ ‫در‬ ، ‫اول‬ ‫نوع‬
4
‫براساس‬ ‫و‬ ‫میکنه‬ ‫کار‬
IP
. ‫هست‬ ‫پورت‬ ‫و‬
•
2
.
‫لیه‬ ‫در‬ ، ‫دوم‬ ‫نوع‬
7
. ‫هست‬ ‫افزاری‬ ‫نرم‬ ‫بالنسر‬ ‫لود‬ ‫و‬ ‫میکنه‬ ‫کار‬
•
3
.
، ‫سوم‬ ‫نوع‬
GSLB
‫مخفف‬ ‫که‬
Global server load balancing
‫بالنسینگ‬ ‫لود‬ ‫عملیات‬ ‫و‬ ‫نمیگیره‬ ‫نظر‬ ‫در‬ ‫رو‬ ‫فاصله‬ ‫هست‬
‫عملیات‬ ‫حال‬ ‫این‬ ‫با‬ ‫و‬ ‫باشه‬ ‫تهران‬ ‫در‬ ‫دیگری‬ ‫و‬ ‫مشهد‬ ‫در‬ ‫میتونه‬ ‫ها‬ ‫سرور‬ ‫از‬ ‫یکی‬ ‫مثال‬ ‫برای‬ . ‫نیست‬ ‫جغرافیایی‬ ‫نقطه‬ ‫یک‬ ‫به‬ ‫محدود‬
‫لیه‬ ‫در‬ ‫همچنین‬ ‫و‬ ‫بده‬ ‫انجام‬ ‫رو‬ ‫لودبالنسینگ‬
4
‫و‬
7
. ‫میکنه‬ ‫کار‬
‫های‬ ‫الگورتیم‬ ‫انواع‬
Load Balancing
•
1
.
‫متد‬
Least Connection
. ‫میده‬ ‫انجام‬ ‫رو‬ ‫لودبالنسینگ‬ ‫فعال‬ ‫های‬ ‫کانکشن‬ ‫کمترین‬ ‫براساس‬
•
2
.
‫کاری‬ ‫مکانیزم‬
Round Robin
.. ‫و‬ ‫دوم‬ ‫سرور‬ ‫دوم‬ ‫درخواست‬ ، ‫اول‬ ‫سرور‬ ‫اول‬ ‫درخواست‬ : ‫مثل‬ . ‫هست‬ ‫صف‬ ‫یک‬ ‫مثل‬
•
3
.
‫متد‬
Least Response Time
. ‫پاسخگویی‬ ‫زمان‬ ‫بودن‬ ‫کم‬ ‫و‬ ‫سرور‬ ‫منابع‬ ‫میزان‬ ‫براساس‬
•
4
.
‫روش‬
Least Bandwith
‫سرور‬ ‫باند‬ ‫پهنای‬ ‫بیشترین‬ ‫براساس‬
LB
. ‫میده‬ ‫انجام‬ ‫رو‬
•
5
.
‫روش‬
Least Packets
. ‫میده‬ ‫انجام‬ ‫پکت‬ ‫میزان‬ ‫کمترین‬ ‫براساس‬ ‫رو‬ ‫بررسی‬
•
6
.
‫متد‬
Custom
. ‫کرد‬ ‫استفاده‬ ‫هم‬ ‫با‬ ‫رو‬ ‫بال‬ ‫های‬ ‫روش‬ ‫از‬ ‫چندتا‬ ‫میشه‬ ‫و‬ ‫هست‬ ‫سفارشی‬ ‫صورت‬ ‫به‬
‫همان‬ ‫یا‬ ‫بار‬ ‫تقسیم‬
Load Balancing
‫میشود‬ ‫انجام‬ ‫چگونه‬
:
‫یک‬ ‫که‬ ‫زمانی‬
Application Server
‫میشود‬ ‫دسترس‬ ‫قابل‬ ‫غیر‬
Load balancer
‫به‬ ‫مربوط‬ ‫های‬ ‫درخواست‬ ‫تمامی‬
Application
‫یکی‬ ‫به‬ ‫را‬
‫سیستم‬ ‫یک‬ ‫از‬ ‫افزاری‬ ‫نرم‬ ‫های‬ ‫درخواست‬ ‫پیشرفته‬ ‫تحویل‬ ‫جهت‬ .‫میدهد‬ ‫ارجاع‬ ‫فعال‬ ‫های‬ ‫سرور‬ ‫از‬ ‫دیگر‬
Application Delivery
Controller
‫اختصار‬ ‫به‬ ‫یا‬
ADC
‫و‬ ‫امنیت‬ ‫تا‬ ‫میشود‬ ‫استفاده‬
Performance
‫به‬ ‫درخواست‬ ‫ارجاع‬ ‫زمان‬ ‫در‬
Web
.‫یابد‬ ‫افزایش‬
ADC
‫یک‬ ‫فقط‬
Load Balancer
،‫شبکه‬ ‫تحویل‬ ‫جهت‬ ‫پلتفرم‬ ‫یک‬ ‫بلکه‬ ‫نیست‬
Application
.‫میباشد‬ ‫بال‬ ‫امنیت‬ ‫و‬ ‫سرعت‬ ‫با‬ ‫مبایل‬ ‫های‬ ‫سرویس‬ ،
‫های‬ ‫الگوریتم‬ ‫و‬ ‫متدها‬
Load Balancing
•
The Least Connection Method
‫که‬ ‫زمانی‬ :
Virtual Server
‫متد‬ ‫از‬ ‫تا‬ ‫میشود‬ ‫کانفیگ‬ ‫طوری‬
Least Connection
‫استفاده‬
.‫میشود‬ ‫انتخاب‬ ‫درخواست‬ ‫به‬ ‫پاسخ‬ ‫جهت‬ ‫دارد‬ ‫را‬ ‫کانکشن‬ ‫تعداد‬ ‫کمترین‬ ‫که‬ ‫سرویسی‬ ‫کند‬
•
The Round Robin Method
‫بین‬ ‫ها‬ ‫درخواست‬ ‫گردشی‬ ‫بصورت‬ ‫الگوریتم‬ ‫این‬ ‫در‬ :
Server
‫یا‬
service
‫این‬ ‫به‬ .‫میشود‬ ‫تقسیم‬ ‫ها‬
‫که‬ ‫صورت‬
Server
‫یا‬ ‫ها‬
Service
‫متد‬ ‫این‬ ‫و‬ ‫میشود‬ ‫ارسال‬ ‫لیست‬ ‫دهنده‬ ‫سرویس‬ ‫اول‬ ‫به‬ ‫درخواست‬ ‫و‬ ‫شده‬ ‫لیست‬ ‫یک‬ ‫بصورت‬ ‫ها‬
.‫میابد‬ ‫ادامه‬ ‫گردشی‬ ‫بصورت‬
•
The Least Response Time Method
‫کمترین‬ ‫و‬ ‫کانکشن‬ ‫تعداد‬ ‫کمترین‬ ‫که‬ ‫ای‬ ‫دهنده‬ ‫سرویس‬ ‫به‬ ‫درخواست‬ ‫روش‬ ‫این‬ ‫در‬ :
.‫میشود‬ ‫ارسال‬ ‫دارد‬ ‫را‬ ‫پاسخدهی‬ ‫زمانی‬ ‫میانگین‬
•
The Least Bandwidth Method
‫دهندگان‬ ‫سرویس‬ ‫برای‬ ‫متد‬ ‫این‬ :
File Server
‫میزان‬ ‫کمترین‬ ‫که‬ ‫سروری‬ ‫و‬ ‫بوده‬ ‫مناسب‬
.‫میشود‬ ‫انتخاب‬ ‫درخواست‬ ‫پردازش‬ ‫جهت‬ ‫دارد‬ ‫را‬ ‫شبکه‬ ‫ترافیک‬ ‫مصرف‬
•
The Least Packets Method
‫میزان‬ ‫کمترین‬ ‫ای‬ ‫دهنده‬ ‫سرویس‬ ‫متد‬ ‫این‬ ‫در‬ :
packet
‫انتخاب‬ ‫میکند‬ ‫دریافت‬ ‫مشخص‬ ‫بازه‬ ‫در‬ ‫را‬
.‫میشود‬
•
The Custom Load Method
‫جهت‬ ‫متد‬ ‫این‬ ‫که‬ ‫زمانی‬ :
Load BAlancing
‫برای‬ ‫را‬ ‫درخواستی‬ ‫هیچ‬ ‫که‬ ‫سرویسی‬ ‫شود‬ ‫انتخاب‬
‫پردازش‬ ‫حال‬ ‫در‬ ‫ها‬ ‫سرور‬ ‫همه‬ ‫اگر‬ ،‫میشود‬ ‫انتخاب‬ ‫ندارد‬ ‫پردازش‬
Transaction
‫داراست‬ ‫را‬ ‫لود‬ ‫میزان‬ ‫کمترین‬ ‫که‬ ‫سروری‬ ‫بودند‬
.‫میشود‬ ‫انتخاب‬ ‫جدید‬ ‫درخواست‬ ‫پردازش‬ ‫جهت‬
‫از‬ ‫استفاده‬ ‫دلیل‬
Load Balancing
‫؟‬ ‫چیست‬
!
‫های‬ ‫سیستم‬ ‫در‬ .‫شد‬ ‫خواهد‬ ‫دهی‬ ‫سرویس‬ ‫در‬ ‫امنیت‬ ‫افزایش‬ ‫و‬ ‫کیفیت‬ ،‫پایداری‬ ‫باعث‬ ‫ساختار‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫صورت‬ ‫هر‬ ‫در‬
Critical
Mission
‫که‬ ‫هایی‬ ‫سیستم‬ ‫و‬
High Availability
.‫میباشد‬ ‫ضروری‬ ‫بار‬ ‫تقسیم‬ ‫از‬ ‫استفاده‬ ‫است‬ ‫مهم‬ ‫ان‬ ‫در‬
Octavia
‫همان‬ ‫یا‬ ‫بار‬ ‫کننده‬‫توزیع‬ ‫ارائه‬ ‫جهت‬ ‫پروژه‬ ‫این‬
LoadBalancer
‫انجام‬ ‫و‬
Scaling
‫ابر‬ ‫محیط‬ ‫در‬
Openstack
.‫است‬ ‫یافته‬ ‫توسعه‬ ‫و‬ ‫شده‬ ‫معرفی‬
‫از‬ ‫پروژه‬ ‫این‬
LBaaS
‫توسط‬ ‫که‬
Neutrun
‫سازی‬‫پیاده‬ ‫مرجع‬ ‫گفت‬ ‫توان‬‫می‬ ‫و‬ ‫بوده‬ ‫مجزا‬ ،‫شود‬‫می‬ ‫ارائه‬
LBaaS v2
‫توزیع‬ ‫کار‬ ‫تواند‬‫می‬ ‫و‬ ‫است‬
‫بین‬ ‫را‬ ‫بار‬
instance
‫سرورهای‬ ،‫ها‬
Bare Metal
‫یک‬ ‫مانند‬ ‫که‬ ‫فیزیکی‬ ‫)سرورهای‬
Nova Instance
‫به‬
Openstack
‫یا‬ ‫است‬ ‫شده‬ ‫معرفی‬
ironic
‫انجام‬ ‫و‬ ‫تقاضا‬ ‫اساس‬ ‫بر‬ ‫بار‬ ‫توزیع‬ ،‫کرد‬ ‫مطرح‬ ‫سرویس‬ ‫این‬ ‫برای‬ ‫توان‬‫می‬ ‫که‬ ‫ای‬‫برجسته‬ ‫ویژگی‬ ‫از‬ .‫دهد‬ ‫انجام‬ ‫کانتینرها‬ ‫و‬ (
Scaling
‫مانند‬ ‫اجزا‬ ‫دیگر‬ ‫با‬ ،‫خود‬ ‫وظیفه‬ ‫انجام‬ ‫جهت‬ ‫پروژه‬ ‫این‬ .‫است‬ ‫زمان‬‫هم‬ ‫صورت‬‫به‬ ‫و‬ ‫افقی‬ ‫صورت‬‫به‬
Nova، Neutron، Keystone، Glance
.… ‫و‬
.‫است‬ ‫تعامل‬ ‫در‬
‫معماری‬ ‫بررسی‬ ‫به‬ ‫ادامه‬ ‫در‬
octavia
: ‫پرداخت‬ ‫خواهیم‬
Octavia
‫از‬ ‫ای‬ ‫مجموعه‬ ‫از‬
instance
) ‫آمفورا‬ ‫نام‬ ‫به‬ ‫محاسباتی‬ ‫گره‬ ‫یک‬ ‫در‬ ‫ها‬
amphorae
‫یک‬ ‫طریق‬ ‫از‬ ‫آمفورها‬ ‫با‬ ‫و‬ ‫کند‬ ‫می‬ ‫استفاده‬ (
) ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫مدیریت‬ ‫شبکه‬
lb-mgmt-net
.‫کند‬ ‫می‬ ‫برقرار‬ ‫ارتباط‬ (
Octavia
:‫است‬ ‫زیر‬ ‫های‬ ‫سرویس‬ ‫شامل‬
API Controller(octavia_api container)
.‫کند‬‫می‬ ‫برقرار‬ ‫ارتباط‬ ‫کنترلر‬ ‫با‬ ‫آمفورا‬ ‫های‬‫نمونه‬ ‫حذف‬ ‫یا‬ ‫نظارت‬ ،‫استقرار‬ ‫و‬ ‫پیکربندی‬ ‫های‬‫روزرسانی‬‫به‬ ‫برای‬
Controller Worker(octavia_worker container)
‫شبکه‬ ‫طریق‬ ‫از‬ ‫را‬ ‫پیکربندی‬ ‫های‬‫روزرسانی‬‫به‬ ‫و‬ ‫پیکربندی‬
LB
.‫کند‬‫می‬ ‫ارسال‬ ‫آمفورا‬ ‫به‬
Health Manager
‫خرد‬ ‫شکست‬ ‫رویدادهای‬ ،‫آمفورها‬ ‫غیرمنتظره‬ ‫خرابی‬ ‫صورت‬ ‫در‬ ‫و‬ ‫دارد‬ ‫نظر‬ ‫زیر‬ ‫را‬ ‫آمفورها‬ ‫تک‬ ‫تک‬ ‫سلمت‬
‫ه‬
.‫کند‬ ‫می‬ ‫کنترل‬ ‫را‬
Housekeeping Manager
.‫کند‬ ‫می‬ ‫مدیریت‬ ‫را‬ ‫آمفورا‬ ‫گواهی‬ ‫چرخش‬ ‫و‬ ‫کند‬ ‫می‬ ‫مدیریت‬ ‫را‬ ‫یدکی‬ ‫مخزن‬ ،‫کند‬ ‫می‬ ‫تمیز‬ ‫را‬ (‫شده‬ ‫)حذف‬ ‫قدیمی‬ ‫داده‬ ‫پایگاه‬ ‫سوابق‬
Loadbalancer :
api object
‫آدرس‬ .‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫موجودیت‬ ‫که‬ ‫بالیی‬
VIP
.‫شود‬ ‫می‬ ‫داده‬ ‫اختصاص‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫ایجاد‬ ‫هنگام‬
‫ایجاد‬ ‫هنگام‬
loadbalancer
‫نمونه‬ ‫یک‬ ،
Amphora
.‫شود‬ ‫می‬ ‫اندازی‬ ‫راه‬ ‫محاسباتی‬ ‫گره‬ ‫روی‬
Amphora :
‫پارامترهای‬ ‫با‬ ‫و‬ ‫شوند‬‫می‬ ‫اجرا‬ ‫محاسباتی‬ ‫های‬‫گره‬ ‫روی‬ ‫که‬ ‫هستند‬ ‫هایی‬‫نمونه‬ ‫معمول‬ ‫آمفوراها‬ .‫دهد‬ ‫می‬ ‫انجام‬ ‫را‬ ‫بار‬ ‫تعادل‬ ‫که‬ ‫ای‬ ‫نمونه‬
‫های‬‫سیاست‬ ،‫سلمت‬ ‫مانیتور‬ ،‫استخر‬ ،‫شنونده‬ ‫به‬ ‫توجه‬ ‫با‬ ‫بار‬ ‫کننده‬‫متعادل‬
L7
).‫شوند‬‫می‬ ‫پیکربندی‬ ‫اعضا‬ ‫پیکربندی‬ ‫و‬
listener, pool,
health monitor, L7 policies, and members configuration
.
(
Listener :
‫یک‬ ‫و‬ .‫بار‬ ‫کننده‬ ‫متعادل‬ ‫سرویس‬ ‫یک‬
listner
‫چندین‬ ‫به‬ ‫است‬ ‫ممکن‬
pool
‫لیه‬ ‫قوانین‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫کند‬ ‫مراجعه‬
7
‫جابجا‬ ‫استخرها‬ ‫بین‬
.‫شود‬
Pool :
‫یک‬ .‫کنند‬ ‫می‬ ‫رسیدگی‬ (‫)آمفورا‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫از‬ ‫مشتری‬ ‫های‬ ‫درخواست‬ ‫به‬ ‫که‬ ‫اعضا‬ ‫از‬ ‫گروهی‬
pool
‫یک‬ ‫با‬ ‫تنها‬
listner
.‫است‬ ‫مرتبط‬
Member :
compute instance
‫یک‬ ‫در‬ (‫)آمفورا‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫پشت‬ ‫ترافیک‬ ‫به‬ ‫که‬ ‫هایی‬
pool
.‫دهند‬ ‫می‬ ‫خدمات‬
‫ترافیک‬ ‫جریان‬ ‫زیر‬ ‫نمودار‬
HTTPS
:‫دهد‬ ‫می‬ ‫نشان‬ ‫استخر‬ ‫عضو‬ ‫یک‬ ‫به‬ ‫را‬
‫سرویس‬
octavia
: ‫دارد‬ ‫نیاز‬ ‫هایی‬ ‫کامپونت‬ ‫چه‬ ‫به‬
• Compute (nova)
• Networking (enable allowed_address_pairs)
• Image (glance)
• Identity (keystone)
• RabbitMQ
• MySQL
‫کجا‬ ‫را‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫واقعی‬ ‫عملکرد‬ ‫که‬ ‫است‬ ‫این‬ ‫بگیرید‬ ‫باید‬ ‫که‬ ‫کلیدی‬ ‫تصمیمات‬ ‫از‬ ‫یکی‬ ،‫مجازی‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫یک‬ ‫طراحی‬ ‫هنگام‬
‫مانند‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫افزار‬ ‫نرم‬ ‫که‬ ‫است‬ ‫این‬ ‫واضح‬ ‫های‬ ‫گزینه‬ ‫از‬ ‫یکی‬ .‫دهید‬ ‫قرار‬
HAProxy
‫یا‬
NGINX
‫های‬ ‫گره‬ ‫از‬ ‫یکی‬ ‫روی‬ ‫بر‬ ‫را‬
‫آشکار‬ ‫عیب‬ ‫این‬ ‫دارای‬ ‫رویکرد‬ ‫این‬ ،‫حال‬ ‫این‬ ‫با‬ .‫کنید‬ ‫هدایت‬ ‫ها‬ ‫گره‬ ‫آن‬ ‫طریق‬ ‫از‬ ‫را‬ ‫ترافیک‬ ‫تمام‬ ‫و‬ ‫کنید‬ ‫ایجاد‬ ‫شبکه‬ ‫گره‬ ‫یا‬ ‫کننده‬ ‫کنترل‬
‫اندازی‬‫راه‬ ‫یک‬ ‫در‬ ‫را‬ ‫خود‬ ‫کننده‬‫کنترل‬ ‫های‬‫گره‬ ،‫البته‬ ،‫اینکه‬ ‫)مگر‬ ‫کند‬‫می‬ ‫معرفی‬ ‫را‬ ‫شکست‬ ‫نقطه‬ ‫یک‬ ‫که‬ ‫است‬
HA
،‫بدتر‬ ‫حتی‬ ،‫و‬ (‫کنید‬ ‫اجرا‬
‫بار‬ ‫های‬ ‫کننده‬ ‫متعادل‬ ‫تعداد‬ ‫وقتی‬ ‫که‬ ‫است‬ ‫معنی‬ ‫این‬ ‫به‬ ‫که‬ ،‫ها‬ ‫گره‬ ‫از‬ ‫کمی‬ ‫تعداد‬ .‫کند‬‫می‬ ‫وارد‬ ‫شبکه‬ ‫های‬‫رابط‬ ‫روی‬ ‫بر‬ ‫را‬ ‫زیادی‬ ‫بار‬
.‫شود‬ ‫نمی‬ ‫پذیر‬ ‫مقیاس‬ ‫خوبی‬ ‫به‬ ‫حل‬ ‫راه‬ ‫این‬ ،‫یابد‬ ‫می‬ ‫افزایش‬ ‫پایانی‬ ‫نقاط‬ ‫یا‬ ‫مجازی‬
Octavia
‫های‬‫نمونه‬ ‫که‬ ،‫مجازی‬ ‫های‬‫ماشین‬ ‫توسط‬ ‫واقعی‬ ‫بار‬ ‫های‬‫کننده‬‫متعادل‬ .‫کند‬ ‫می‬ ‫انتخاب‬ ‫را‬ ‫متفاوتی‬ ‫رویکرد‬
OpenStack
‫معمولی‬
‫یک‬ ‫از‬ ‫اما‬ ،‫شوند‬‫می‬ ‫شناسایی‬ ،‫شوند‬‫می‬ ‫اجرا‬ ‫محاسباتی‬ ‫های‬‫گره‬ ‫روی‬ ‫که‬ ‫هستند‬
image
‫افزار‬‫نرم‬ ‫بار‬ ‫کننده‬‫متعادل‬ ‫یک‬ ‫حاوی‬ ‫اختصاصی‬
HAProxy
‫نمونه‬ ‫پیکربندی‬ ‫کنترل‬ ‫برای‬ ‫که‬ ‫کنند‬‫می‬ ‫استفاده‬ ‫عاملی‬ ‫و‬
HAProxy
‫آمفورا‬ ‫که‬ ‫ها‬‫نمونه‬ ‫این‬ ،‫بنابراین‬ .‫شود‬‫می‬ ‫استفاده‬
–
‫بند‬‫زمان‬ ‫توسط‬ ‫شوند‬‫می‬ ‫نامیده‬
–
Nova
‫های‬‫نمونه‬ ‫سایر‬ ‫مانند‬
Nova
‫توانند‬‫می‬ ‫و‬ ‫شوند‬‫می‬ ‫مقیاس‬ ‫خوبی‬ ‫به‬ ‫بنابراین‬ ‫و‬ ‫شوند‬‫می‬ ‫ریزی‬‫برنامه‬
،‫آمفورها‬ ‫کنترل‬ ‫برای‬ .‫کنند‬ ‫استفاده‬ ‫موجود‬ ‫محاسباتی‬ ‫های‬‫گره‬ ‫تمام‬ ‫از‬
octavia
‫از‬ ‫متشکل‬ ‫که‬ ‫کند‬ ‫می‬ ‫استفاده‬ ‫کنترلی‬ ‫مکانیزم‬ ‫یک‬ ‫از‬
w
octavia worker
،‫کند‬ ‫می‬ ‫اجرا‬ ‫را‬ ‫ها‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫حذف‬ ‫و‬ ‫رسانی‬ ‫روز‬ ‫به‬ ،‫ایجاد‬ ‫منطق‬ ‫که‬ ‫است‬
health manager
‫را‬ ‫آمفورها‬ ‫که‬
.‫کند‬ ‫مدیریت‬ ‫را‬ ‫استخر‬ ‫تواند‬ ‫می‬ ‫و‬ ‫کند‬ ‫می‬ ‫نظارت‬
‫سرور‬
API
‫های‬ ‫تماس‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ‫و‬
RPC
‫یعنی‬ ،
RabbitMQ
‫آن‬ ‫قبل‬ ‫که‬ ‫همانطور‬ ،‫کنند‬ ‫می‬ ‫برقرار‬ ‫ارتباط‬ ‫یکدیگر‬ ‫با‬ ،
‫های‬ ‫سرویس‬ ‫سایر‬ ‫برای‬ ‫را‬
OpenStack
‫دو‬ ‫ارتباط‬ ‫این‬ .‫کنند‬ ‫برقرار‬ ‫ارتباط‬ ‫آمفورا‬ ‫با‬ ‫باید‬ ‫نیز‬ ‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ،‫حال‬ ‫این‬ ‫با‬ .‫ایم‬ ‫دیده‬
.‫است‬ ‫جهته‬
،‫شود‬ ‫می‬ ‫اجرا‬ ‫آمفورا‬ ‫هر‬ ‫روی‬ ‫که‬ ‫عاملی‬
REST API
. ‫هست‬ ‫بیس‬
،‫برعکس‬
health manager
‫آمفورها‬ ‫از‬ ‫باید‬ ‫کنترل‬ ‫هواپیمای‬ ‫بنابراین‬ ‫و‬ ‫دهد‬ ‫می‬ ‫گوش‬ ‫آمفورا‬ ‫توسط‬ ‫شده‬ ‫صادر‬ ‫سلمت‬ ‫وضعیت‬ ‫های‬ ‫پیام‬ ‫به‬
.‫باشد‬ ‫دسترسی‬ ‫قابل‬ ‫نیز‬
‫دارد‬ ‫وجود‬ ‫بار‬ ‫تعادل‬ ‫مدیریت‬ ‫شبکه‬ ‫نام‬ ‫به‬ (‫نوترون‬ ‫)یعنی‬ ‫مجازی‬ ‫شبکه‬ ‫یک‬ ‫که‬ ‫کند‬‫می‬ ‫فرض‬ ‫اکتاویا‬ ،‫طرفه‬ ‫دو‬ ‫ارتباط‬ ‫این‬ ‫کردن‬ ‫فعال‬ ‫برای‬
‫فرض‬ ‫اکتاویا‬ ،‫این‬ ‫بر‬ ‫علوه‬ .‫کند‬ ‫می‬ ‫متصل‬ ‫شبکه‬ ‫این‬ ‫به‬ ‫را‬ ‫آمفورها‬ ‫تمام‬ ‫اکتاویا‬ ‫سپس‬ .‫شود‬‫می‬ ‫مشخص‬ ‫نصب‬ ‫هنگام‬ ‫در‬ ‫مدیر‬ ‫توسط‬ ‫که‬
‫به‬ ‫توانند‬‫می‬ ‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ،‫شبکه‬ ‫این‬ ‫طریق‬ ‫از‬ ‫که‬ ‫کند‬‫می‬
API REST
. ‫شود‬‫می‬ ‫اجرا‬ ‫آمفورا‬ ‫هر‬ ‫روی‬ ‫که‬ ‫عاملی‬ ‫توسط‬ ‫که‬
‫بار‬ ‫تعادل‬ ‫مدیریت‬ ‫شبکه‬ ‫اتصال‬ ‫و‬ ‫ایجاد‬
‫ما‬ ‫آمفورهای‬ ‫که‬ ‫باشد‬ ‫مجازی‬ ‫شبکه‬ ‫یک‬ ‫باید‬ ‫این‬ ‫که‬ ‫بیاورید‬ ‫یاد‬ ‫به‬ .‫شد‬ ‫ذکر‬ ‫قبل‬ ‫که‬ ‫است‬ ‫بار‬ ،‫کننده‬ ‫متعادل‬ ‫شبکه‬ ‫اندازی‬ ‫راه‬ ‫چالش‬ ‫اولین‬
‫به‬ ‫آمفورا‬ ‫از‬ ‫ترافیک‬ ‫تا‬ ‫دهد‬ ‫می‬ ‫اجازه‬ ‫و‬ ‫دهد‬ ‫می‬ ‫کنترل‬ ‫صفحه‬ ‫از‬ ‫را‬ ‫آمفورها‬ ‫به‬ ‫دسترسی‬ ‫اجازه‬ ‫که‬ ‫شوند‬ ‫متصل‬ ‫آن‬ ‫به‬
health manager
.‫دارد‬ ‫وجود‬ ‫گزینه‬ ‫چندین‬ ‫شبکه‬ ‫این‬ ‫ساخت‬ ‫برای‬ .‫برسد‬
‫تگ‬ ‫یک‬ ‫یا‬ ‫فیزیکی‬ ‫رابط‬ ‫یک‬ ،‫بنابراین‬ .‫کنیم‬ ‫ایجاد‬ ‫منظور‬ ‫این‬ ‫برای‬ ‫اختصاصی‬ ‫دهنده‬ ‫ارائه‬ ‫شبکه‬ ‫یک‬ ‫توانیم‬‫می‬ ‫ما‬ ،‫ابتدا‬
VLAN
‫گره‬ ‫هر‬ ‫در‬
‫کننده‬ ‫متعادل‬ ‫مدیریت‬ ‫شبکه‬ ‫عنوان‬ ‫به‬ ‫که‬ ‫کنیم‬ ‫می‬ ‫اندازی‬ ‫راه‬ ‫نوترون‬ ‫در‬ ‫را‬ ‫مربوطه‬ ‫دهنده‬ ‫ارائه‬ ‫شبکه‬ ‫یک‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫رزرو‬ ‫شبکه‬ ‫آن‬ ‫برای‬
.‫دهد‬ ‫اجازه‬ ‫شما‬ ‫فیزیکی‬ ‫شبکه‬ ‫زیرساخت‬ ‫که‬ ‫کند‬ ‫می‬ ‫کار‬ ‫صورتی‬ ‫در‬ ‫تنها‬ ‫این‬ ‫که‬ ‫است‬ ‫بدیهی‬ .‫کنیم‬ ‫می‬ ‫استفاده‬ ‫بار‬
‫پل‬ ‫یک‬ ‫توانیم‬‫می‬ ،‫مثال‬ ‫عنوان‬ ‫به‬ ‫است‬ " ‫"مجازی‬ ‫فیزیکی‬ ‫شبکه‬ ‫یک‬ ‫از‬ ‫استفاده‬ ‫دیگر‬ ‫گزینه‬ ،‫نیست‬ ‫اینطور‬ ‫اگر‬
OVS
‫نوترون‬ ‫از‬ ‫خارج‬ ‫که‬
‫یک‬ ‫عنوان‬‫به‬ ‫را‬ ‫شبکه‬ ‫این‬ ‫و‬ ‫کنیم‬ ‫متصل‬ ‫هم‬ ‫به‬ ‫همپوشانی‬ ‫شبکه‬ ‫یک‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫ها‬‫پل‬ ‫این‬ ،‫کنیم‬ ‫اندازی‬‫راه‬ ‫گره‬ ‫هر‬ ‫روی‬ ‫شود‬‫می‬ ‫مدیریت‬
‫پل‬ ‫دلیل‬ ‫به‬ ‫اما‬ ،‫کند‬ ‫کار‬ ‫ها‬ ‫محیط‬ ‫اکثر‬ ‫در‬ ‫باید‬ ‫این‬ .‫دهیم‬‫می‬ ‫قرار‬ ‫دهنده‬‫ارائه‬ ‫شبکه‬ ‫یک‬ ‫آن‬ ‫روی‬ ‫بر‬ ‫که‬ ‫کنیم‬ ‫ارائه‬ ‫نوترون‬ ‫به‬ ‫فیزیکی‬ ‫شبکه‬
.‫کند‬ ‫می‬ ‫ایجاد‬ ‫اضافی‬ ‫سربار‬ ‫یک‬ ،‫گره‬ ‫هر‬ ‫روی‬ ‫نیاز‬ ‫مورد‬ ‫اضافی‬ ‫های‬
‫شبکه‬ ‫یک‬ ‫از‬ ‫سادگی‬ ‫به‬ ‫توانیم‬‫می‬ ‫ما‬ ‫نهایت‬ ‫در‬
VXLAN
‫دستگاه‬ ‫یک‬ ‫افزودن‬ ‫با‬ ‫و‬ ‫کنیم‬ ‫استفاده‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫مدیریت‬ ‫شبکه‬ ‫عنوان‬ ‫به‬
.‫شویم‬ ‫متصل‬ ‫آن‬ ‫به‬ ‫شبکه‬ ‫گره‬ ‫از‬ ،‫نوترون‬ ‫ادغام‬ ‫پل‬ ‫به‬ ‫اضافی‬ ‫شبکه‬
‫شبکه‬ ‫یک‬ ‫اگر‬ ‫که‬ ‫بیاورید‬ ‫یاد‬ ‫به‬
Neutron VXLAN
‫برچسب‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫را‬ ‫خود‬ ‫شبکه‬ ‫این‬ ،‫کنیم‬ ‫اندازی‬ ‫راه‬
VLAN
‫پل‬ ‫روی‬ ‫محلی‬
‫عامل‬ ‫که‬ ‫شبکه‬ ‫گره‬ ‫برای‬ ‫خاص‬ ‫طور‬ ‫به‬ ‫این‬ .‫دهد‬ ‫می‬ ‫نشان‬ ‫است‬ ‫متصل‬ ‫شبکه‬ ‫این‬ ‫به‬ ‫پورت‬ ‫یک‬ ‫که‬ ‫ای‬ ‫گره‬ ‫هر‬ ‫ادغام‬
DHCP
‫شبکه‬ ‫برای‬
VXLAN
‫عامل‬ ‫یک‬ ‫نوترون‬ ،‫کنیم‬ ‫می‬ ‫ایجاد‬ ‫را‬ ‫شبکه‬ ‫که‬ ‫هنگامی‬ ،‫بنابراین‬ .‫است‬ ‫صادق‬ ،‫شود‬‫می‬ ‫اجرا‬ ‫آن‬ ‫روی‬ ‫ما‬
DHCP
‫شبکه‬ ‫گره‬ ‫روی‬ ‫را‬
‫تگ‬ ‫یک‬ ‫و‬ . ‫میکند‬ ‫ایجاد‬
VLAN
‫سازی‬ ‫یکپارچه‬ ‫پل‬ ‫در‬ ‫شبکه‬ ‫این‬ ‫به‬ ‫متعلق‬ ‫ترافیک‬ ‫برای‬ ‫که‬ ‫را‬ ‫محلی‬
br-int
.‫دهد‬ ‫می‬ ‫اختصاص‬
‫دستگاه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫)که‬ ‫ادغام‬ ‫پل‬ ‫به‬ ‫متصل‬ ‫اضافی‬ ‫داخلی‬ ‫پورت‬ ‫یک‬ ‫سادگی‬ ‫به‬ ‫توانیم‬ ‫می‬ ‫اکنون‬ ،‫شبکه‬ ‫گره‬ ‫از‬ ‫شبکه‬ ‫این‬ ‫به‬ ‫اتصال‬ ‫برای‬
‫تگ‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫شده‬ ‫پیکربندی‬ ‫دسترسی‬ ‫پورت‬ ‫و‬ (‫بود‬ ‫خواهد‬ ‫مشاهده‬ ‫قابل‬ ‫مجازی‬ ‫شبکه‬
VLAN
‫آدرس‬ ‫یک‬ ‫سپس‬ .‫بیاوریم‬
IP
‫به‬
‫آدرس‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫دهیم‬ ‫می‬ ‫اختصاص‬ ‫دستگاه‬ ‫این‬
IP
‫شبکه‬ ‫در‬ ‫دیگری‬ ‫پورت‬ ‫هر‬ ‫به‬ ‫شبکه‬ ‫گره‬ ‫از‬ ‫توانیم‬ ‫می‬ ‫اکنون‬ ،‫دروازه‬ ‫عنوان‬ ‫به‬
Neutron VXLAN
‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ‫که‬ ‫همانطور‬ .‫شویم‬ ‫متصل‬
Octavia
‫سرور‬ ‫با‬
API Octavia
‫طریق‬ ‫از‬
RPC
،‫کنند‬ ‫می‬ ‫برقرار‬ ‫ارتباط‬
.‫کنند‬ ‫استفاده‬ ‫آمفورا‬ ‫با‬ ‫ارتباط‬ ‫برای‬ ‫رابط‬ ‫این‬ ‫از‬ ‫بتوانند‬ ‫تا‬ ‫دهیم‬ ‫قرار‬ ‫شبکه‬ ‫گره‬ ‫در‬ ‫را‬ ‫آنها‬ ‫توانیم‬ ‫می‬
‫این‬ ‫از‬ ‫میتوانید‬ : ‫نکته‬
ansible
. ‫کنید‬ ‫استفاده‬ ‫شبکه‬ ‫ساخت‬ ‫برای‬ ‫اتوماتیک‬ ‫بصورت‬ ‫هم‬ ‫فایل‬
‫نوترون‬ ‫شبکه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫مجازی‬ ‫شبکه‬ ‫یک‬
VXLAN
‫کنید‬ ‫اضافه‬ ‫زیرشبکه‬ ‫یک‬ ‫و‬ ‫کنید‬ ‫ایجاد‬ ‫معمولی‬
‫پورت‬ ‫به‬ ‫ترافیک‬ ‫تا‬ ‫کنید‬ ‫ایجاد‬ ‫امنیتی‬ ‫های‬‫گروه‬
TCP
‫عامل‬ ‫که‬
amphora
‫آن‬ ‫روی‬
API REST
‫فرض‬‫پیش‬ ‫طور‬‫)به‬ ‫دهد‬‫می‬ ‫نشان‬ ‫را‬ ‫خود‬
‫پورت‬
9443
‫به‬ ‫دسترسی‬ ‫اجازه‬ ‫و‬ (
health manager
) ‫ب‬
UDP
‫پورت‬ ،
5555
‫ترافیک‬ ‫به‬ ‫که‬ ‫است‬ ‫خوب‬ ‫همچنین‬ .‫کنید‬ ‫ایجاد‬ ‫را‬ (
SSH
‫و‬
ICMP
.‫کنند‬ ‫تحلیل‬ ‫و‬ ‫تجزیه‬ ‫را‬ ‫مسائل‬ ‫آمفورا‬ ‫به‬ ‫دسترسی‬ ‫و‬ ‫کردن‬ ‫پینگ‬ ‫با‬ ‫دهید‬ ‫اجازه‬
‫شبکه‬ ‫در‬ ‫پورت‬ ‫یک‬ ‫اکنون‬
load balancer
‫آدرس‬ ‫یک‬ ‫این‬ .‫کنیم‬ ‫می‬ ‫ایجاد‬
IP
‫استفاده‬ ‫خود‬ ‫پورت‬ ‫برای‬ ‫توانیم‬ ‫می‬ ‫که‬ ‫کند‬ ‫می‬ ‫ذخیره‬ ‫را‬
‫آدرس‬ ‫تداخل‬ ‫از‬ ‫تا‬ ‫کنیم‬
IP
‫کنیم‬ ‫جلوگیری‬ ‫نوترون‬ ‫با‬
‫عامل‬ ‫نام‬ ‫فضای‬ ‫تا‬ ‫مانیم‬ ‫می‬ ‫منتظر‬ ‫سپس‬
DHCP
‫تگ‬ ‫و‬ ‫کرده‬ ‫دریافت‬ ‫را‬ ‫مربوطه‬ ‫نوترون‬ ‫پورت‬ ‫شناسه‬ ،‫شود‬ ‫ایجاد‬
VLAN
‫این‬ ‫برای‬ ‫را‬
‫از‬ ‫پورت‬
OVS DB
‫این‬ ‫از‬ ‫)میتوانید‬ ‫خوانیم‬ ‫می‬
‫اسکریپت‬
(‫کنید‬ ‫استفاده‬ ‫کار‬ ‫این‬ ‫برای‬ ‫هم‬
‫شناسه‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫اکنون‬
VLAN
‫دسترسی‬ ‫پورت‬ ‫یک‬
OVS
‫آدرس‬ ‫یک‬ ،‫کنید‬ ‫ایجاد‬
IP
‫اختصاص‬ ‫مربوطه‬ ‫مجازی‬ ‫شبکه‬ ‫دستگاه‬ ‫به‬
.‫بیاورید‬ ‫بال‬ ‫را‬ ‫دستگاه‬ ‫و‬ ‫دهید‬
‫عامل‬ ‫که‬ ‫هنگامی‬
OVS
. ‫باشد‬ ‫داشته‬ ‫وجود‬ ‫کمی‬ ‫مشکلی‬ ‫شاید‬ ‫پیکربندی‬ ‫این‬ ‫با‬ ،‫شود‬ ‫می‬ ‫مجدد‬ ‫اندازی‬ ‫راه‬
‫شناسه‬ ،‫مورد‬ ‫این‬ ‫در‬ ‫زیرا‬
VLAN
‫را‬ ‫پیکربندی‬ ‫تا‬ ‫کنیم‬ ‫ایجاد‬ ‫اسکریپت‬ ‫یک‬ ‫باید‬ ‫همچنین‬ ‫ما‬ ‫بنابراین‬ .‫کند‬ ‫تغییر‬ ‫تواند‬ ‫می‬ ‫محلی‬
‫عامل‬ ‫که‬ ‫زمان‬ ‫هر‬ ‫و‬ ‫کنیم‬ ‫روزرسانی‬‫به‬
OVS
‫فایل‬ ‫یک‬ ‫طریق‬ ‫از‬ ‫را‬ ‫آن‬ ،‫شد‬ ‫اندازی‬‫راه‬ ‫دوباره‬
unit systemd
.‫کنیم‬ ‫اجرا‬
‫مورد‬ ‫در‬
image
: ‫ها‬
‫در‬ ‫باید‬ ،‫شد‬ ‫ساخته‬ ‫تصویر‬ ‫که‬ ‫هنگامی‬
Glance
‫پیکربندی‬ ‫به‬ ‫که‬ ‫شود‬ ‫تگ‬ ‫برچسبی‬ ‫با‬ ‫و‬ ‫شود‬ ‫آپلود‬
Octavia
‫تگ‬ ‫این‬ .‫شد‬ ‫خواهد‬ ‫اضافه‬ ‫نیز‬
‫توسط‬ ‫بعدا‬
Octavia
‫استفاده‬ ‫برای‬ ‫را‬ ‫طعمی‬ ‫باید‬ ‫ما‬ ،‫این‬ ‫بر‬ ‫علوه‬ .‫شود‬ ‫ایجاد‬ ‫صحیح‬ ‫تصویر‬ ‫یابی‬ ‫مکان‬ ‫برای‬ ‫آمفورا‬ ‫یک‬ ‫که‬ ‫شود‬ ‫می‬ ‫استفاده‬
‫حداقل‬ ‫به‬ ‫ما‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ .‫کنیم‬ ‫تنظیم‬ ‫آمفورا‬ ‫برای‬
1
‫و‬ ‫رم‬ ‫گیگابایت‬
2
‫آمفورا‬ ‫تصویر‬ ‫بتوانیم‬ ‫تا‬ ‫داریم‬ ‫نیاز‬ ‫دیسک‬ ‫فضای‬ ‫گیگابایت‬
. ‫باشید‬ ‫داشته‬ ‫را‬ ‫منابع‬ ‫این‬ ‫شوید‬ ‫مطمئن‬ ‫بنابراین‬ ،‫کنیم‬ ‫اجرا‬ ‫را‬
‫پیکربندی‬ ‫و‬ ‫کلیدها‬ ،‫ها‬ ‫گواهی‬
‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ‫که‬ ‫دیدیم‬ ‫بال‬ ‫در‬
Octavia
‫یک‬ ‫از‬
REST API
‫برای‬ ‫شود‬‫می‬ ‫اجرا‬ ‫آمفورا‬ ‫هر‬ ‫روی‬ ‫که‬ ‫عاملی‬ ‫توسط‬ ‫که‬ ‫کنند‬‫می‬ ‫استفاده‬
‫های‬‫نمونه‬ ‫پیکربندی‬ ‫در‬ ‫تغییراتی‬ ‫ایجاد‬
HAProxy
،‫منظور‬ ‫این‬ ‫برای‬ .‫شود‬ ‫ایمن‬ ‫باید‬ ‫اتصال‬ ‫این‬ ‫که‬ ‫است‬ ‫بدیهی‬ .‫کند‬‫می‬ ‫استفاده‬
Octavia
‫از‬
‫های‬ ‫گواهینامه‬
TLS
.‫کند‬ ‫می‬ ‫استفاده‬
‫گواهی‬ .‫شود‬ ‫می‬ ‫استفاده‬ ‫عامل‬ ‫به‬ ‫اتصال‬ ‫هنگام‬ ‫در‬ ‫هویت‬ ‫احراز‬ ‫برای‬ ‫کنترل‬ ‫صفحه‬ ‫توسط‬ ‫گواهی‬ ‫این‬ .‫دارد‬ ‫وجود‬ ‫مشتری‬ ‫گواهی‬ ،‫اول‬
‫گواهی‬ ‫که‬ ‫آنجایی‬ ‫از‬ .‫شود‬ ‫ایجاد‬ ‫نصب‬ ‫حین‬ ‫در‬ ‫باید‬ ‫مربوطه‬ ‫کلید‬ ‫و‬ ‫مشتری‬
CA
‫هر‬ ‫در‬ ‫باید‬ ‫شود‬ ‫می‬ ‫استفاده‬ ‫مشتری‬ ‫گواهی‬ ‫امضای‬ ‫برای‬ ‫که‬
‫برای‬ ‫باید‬ ‫گواهی‬ ‫این‬ ،(‫کند‬ ‫استفاده‬ ‫دریافتی‬ ‫های‬ ‫درخواست‬ ‫تأیید‬ ‫برای‬ ‫آن‬ ‫از‬ ‫بتواند‬ ‫نماینده‬ ‫که‬ ‫طوری‬ ‫)به‬ ‫باشد‬ ‫داشته‬ ‫وجود‬ ‫آمفورا‬
Octavia
‫و‬ ،‫باشد‬ ‫شده‬ ‫شناخته‬ ‫نیز‬
Octavia
‫کرد‬ ‫ایجاد‬ ‫آمفورا‬ .‫کند‬ ‫می‬ ‫توزیع‬ ‫جدید‬ ‫مورد‬ ‫هر‬ ‫در‬ ‫را‬ ‫آن‬
‫یک‬ ‫توسط‬ ‫اجرا‬ ‫زمان‬ ‫در‬ ‫پویا‬ ‫صورت‬ ‫به‬ ‫و‬ ‫هستند‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫عامل‬ ‫هر‬ ‫برای‬ ‫ها‬ ‫گواهینامه‬ ‫این‬ .‫دارد‬ ‫نیاز‬ ‫سرور‬ ‫گواهی‬ ‫به‬ ‫نماینده‬ ‫هر‬ ،‫ثانیا‬
‫کنترل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫گواهی‬ ‫مولد‬
Octavia
‫گواهی‬ ‫یک‬ ‫باید‬ ‫فقط‬ ‫ما‬ ،‫نصب‬ ‫طول‬ ‫در‬ .‫شوند‬ ‫می‬ ‫ایجاد‬ ‫است‬ ‫شده‬ ‫تعبیه‬
CA
‫کلید‬ ‫یک‬ ‫و‬
‫که‬ ‫کنیم‬ ‫ارائه‬ ‫مربوطه‬ ‫خصوصی‬
Octavia
‫کلید‬ ‫و‬ ‫ها‬ ‫گواهینامه‬ ‫خلصه‬ ‫طور‬ ‫به‬ ‫زیر‬ ‫نمودار‬ .‫کند‬‫می‬ ‫استفاده‬ ‫سرور‬ ‫های‬‫گواهی‬ ‫صدور‬ ‫برای‬ ‫آن‬ ‫از‬
.‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫مربوطه‬
: ‫نصب‬ ‫روش‬
‫ساخت‬
user
‫سرویس‬ ‫برای‬
octavia
:
openstack user create --domain default --project service --password servicepassword octavia
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| default_project_id |
| domain_id | default |
| enabled | True |
| id |
| name | octavia |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
‫کاربر‬ ‫برای‬ ‫ادمین‬ ‫رول‬ ‫عنوان‬ ‫به‬ ‫کاربر‬ ‫کردن‬ ‫اضافه‬
octavia
openstack role add --project service --user octavia admin
‫کاربر‬ ‫برای‬ ‫سرویس‬ ‫ساخت‬
octavia
:
openstack service create --name octavia --description "OpenStack LBaaS" load-balancer
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack LBaaS |
| enabled | True |
| id |
| name | octavia |
| type | load-balancer |
+-------------+----------------------------------+
‫ساخت‬
endpoint
:
export octavia_api=<ip>
openstack endpoint create --region RegionOne load-balancer public http://$octavia_api:9876
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | |
| service_name | octavia |
| service_type | load-balancer |
| url | http://<ip>:9876 |
+--------------+----------------------------------+
openstack endpoint create --region RegionOne load-balancer internal http://$octavia_api:9876
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | |
| service_name | octavia |
| service_type | load-balancer |
| url | http://<ip>:9876 |
+--------------+----------------------------------+
openstack endpoint create --region RegionOne load-balancer admin http://$octavia_api:9876
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | |
| service_name | octavia |
| service_type | load-balancer |
| url | http://<ip>:9876 |
+--------------+----------------------------------+
‫برای‬ ‫دیتابیس‬ ‫ایجاد‬
octavia
: ‫یوزر‬ ‫ساخت‬ ‫و‬
MariaDB [(none)]> create database octavia;
MariaDB [(none)]> grant all privileges on octavia.* to octavia@'localhost' identified by
'password';
MariaDB [(none)]> grant all privileges on octavia.* to octavia@'%' identified by
'password';
MariaDB [(none)]> flush privileges;
‫در‬
network node
‫سرویس‬
octavia
: ‫میکنیم‬ ‫نصب‬ ‫را‬
dnf -y install openstack-octavia-api openstack-octavia-health-manager openstack-octavia-housekeeping
‫توسط‬ ‫که‬ ‫گواهی‬ ‫ایجاد‬
LoadBalancer Instance
‫خدمات‬ ‫و‬
Octavia
.‫شود‬ ‫می‬ ‫استفاده‬
mkdir -p /etc/octavia/certs/private
mkdir ~/work
cd ~/work
git clone https://opendev.org/openstack/octavia.git
cd octavia/bin
./create_dual_intermediate_CA.sh
cp -p ./dual_ca/etc/octavia/certs/server_ca.cert.pem /etc/octavia/certs
cp -p ./dual_ca/etc/octavia/certs/server_ca-chain.cert.pem /etc/octavia/certs
cp -p ./dual_ca/etc/octavia/certs/server_ca.key.pem /etc/octavia/certs/private
cp -p ./dual_ca/etc/octavia/certs/client_ca.cert.pem /etc/octavia/certs
cp -p ./dual_ca/etc/octavia/certs/client.cert-and-key.pem /etc/octavia/certs/private
chown -R octavia /etc/octavia/certs
‫کانفیق‬
octavia
:
mv /etc/octavia/octavia.conf /etc/octavia/octavia.conf.org
vi /etc/octavia/octavia.conf
# create new
[DEFAULT]
# RabbitMQ connection info
transport_url = rabbit://openstack:password@<ip>
[api_settings]
# IP address this host listens
bind_host = <ip>
bind_port = 9876
auth_strategy = keystone
api_base_uri = http://<ip>:9876
# MariaDB connection info
[database]
connection = mysql+pymysql://octavia:password@<ip>/octavia
[health_manager]
bind_ip = 0.0.0.0
bind_port = 5555
# Keystone auth info
[keystone_authtoken]
www_authenticate_uri = http://<ip>:5000
auth_url = http://<ip>:5000
memcached_servers = <ip>:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = octavia
password = servicepassword
# specify certificates created on [2]
[certificates]
ca_private_key = /etc/octavia/certs/private/server_ca.key.pem
ca_certificate = /etc/octavia/certs/server_ca.cert.pem
server_certs_key_passphrase = insecure-key-do-not-use-this-key
ca_private_key_passphrase = not-secure-passphrase
# specify certificates created on [2]
[haproxy_amphora]
server_ca = /etc/octavia/certs/server_ca-chain.cert.pem
client_cert = /etc/octavia/certs/private/client.cert-and-key.pem
# specify certificates created on [2]
[controller_worker]
client_ca = /etc/octavia/certs/client_ca.cert.pem
[oslo_messaging]
topic = octavia_prov
# Keystone auth info
[service_auth]
auth_url = http://<ip>:5000
memcached_servers = <ip>:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = octavia
password = servicepassword
chmod 640 /etc/octavia/octavia.conf
chgrp octavia /etc/octavia/octavia.conf
su -s /bin/bash octavia -c "octavia-db-manage --config-file /etc/octavia/octavia.conf upgrade head"
systemctl enable --now octavia-api octavia-health-manager octavia-housekeeping octavia-worker
: ‫فایروال‬ ‫کانفیق‬
firewall-cmd --add-port=9876/tcp
firewall-cmd --runtime-to-permanent
‫ایمیج‬ ‫یک‬ ‫ساخت‬
LoadBalancer
‫به‬ ‫کردن‬ ‫اضافه‬ ‫و‬
Glance
:
dnf -y install openstack-octavia-diskimage-create debootstrap python3-octaviaclient
# create an instance image
octavia-diskimage-create.sh -d focal
# add to Glance
openstack image create "Amphora" --tag "Amphora" --file amphora-x64-haproxy.qcow2 --disk-format
qcow2 --container-format bare --private --project service
# add [flavor] for Amphora instance
openstack flavor create --id 100 --vcpus 1 --ram 1024 --disk 5 m1.octavia --private --project service
# add a security group for Amphora instance
openstack security group create lb-mgmt-sec-group --project service
# allow required ports for security group
openstack security group rule create --protocol icmp --ingress lb-mgmt-sec-group
openstack security group rule create --protocol tcp --dst-port 80:80 lb-mgmt-sec-group
openstack security group rule create --protocol tcp --dst-port 443:443 lb-mgmt-sec-group
openstack security group rule create --protocol tcp --dst-port 9443:9443 lb-mgmt-sec-group
‫سرویس‬
Octavia
: ‫کنید‬ ‫پیکربندی‬ ‫امنیتی‬ ‫گروه‬ ‫شناسه‬ ‫برای‬ ‫را‬
openstack image list
: ‫نمونه‬ ‫برای‬
+--------------------------------------+-----------------+--------+
| ID | Name | Status |
+--------------------------------------+-----------------+--------+
| dc71ffa4-4a41-4614-bdca-27cd5bc8218b | Amphora | active |
| cfce605e-151b-43dd-b743-2c7988d69e96 | CentOS-Stream-8 | active |
+--------------------------------------+-----------------+--------+
openstack flavor list --all
: ‫نمونه‬ ‫برای‬
+-----+------------+------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+-----+------------+------+------+-----------+-------+-----------+
| 0 | m1.small | 2048 | 10 | 0 | 1 | True |
| 100 | m1.octavia | 1024 | 5 | 0 | 1 | False |
+-----+------------+------+------+-----------+-------+-----------+
openstack network list
: ‫نمونه‬ ‫برای‬
+--------------------------------------+---------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+---------+--------------------------------------+
| 3adf0a70-6446-4095-916d-17d9f753bbe6 | private | 9724f8a3-4c59-4d7d-9838-82bc682a551c |
| ac8911e7-afd7-4913-997e-2f0412f1271b | public | 61bf3654-bef1-4ddd-8d23-f2fd41166f4e |
+--------------------------------------+---------+--------------------------------------+
openstack security group list
: ‫نمونه‬ ‫برای‬
+--------------------------------------+-------------------+------------------------
+----------------------------------+------+
| ID | Name | Description |
Project | Tags |
+--------------------------------------+-------------------+------------------------
+----------------------------------+------+
| 66feb966-fd16-4c49-99d3-d845fd247ea8 | lb-mgmt-sec-group | lb-mgmt-sec-group |
7e53ef14eb894f379ea1929f5defc949 | [] |
| 888fd13d-5621-4ca9-96cf-3865021329dd | secgroup01 | secgroup01 |
2decda8bcd724687a1cf05064ab21fdf | [] |
| e7b47f71-4cd6-4b91-b1eb-b228856fb842 | default | Default security group |
2decda8bcd724687a1cf05064ab21fdf | [] |
+--------------------------------------+-------------------+------------------------
+----------------------------------+------+
vi /etc/octavia/octavia.conf
# add into [controller_worker] section
[controller_worker]
client_ca = /etc/octavia/certs/client_ca.cert.pem
amp_image_tag = Amphora
# specify [flavor] ID for Amphora instance
amp_flavor_id = 100
# specify security group ID Amphora instance
amp_secgroup_list = 66feb966-fd16-4c49-99d3-d845fd247ea8
# specify network ID to boot Amphora instance (example below specifies public network
[public])
amp_boot_network_list = ac8911e7-afd7-4913-997e-2f0412f1271b
network_driver = allowed_address_pairs_driver
compute_driver = compute_nova_driver
amphora_driver = amphora_haproxy_rest_driver
[root@network ~]#
systemctl restart octavia-api 
octavia-health-manager 
octavia-housekeeping 
octavia-worker
‫نمونه‬ ‫یک‬ ‫ادامه‬ ‫در‬
Loadbalancer
: ‫میکنیم‬ ‫ایجاد‬
openstack subnet list
+--------------------------------------+----------------
+--------------------------------------+------------------+
| ID | Name | Network
| Subnet |
+--------------------------------------+----------------
+--------------------------------------+------------------+
| 61bf3654-bef1-4ddd-8d23-f2fd41166f4e | public-subnet | ac8911e7-afd7-4913-997e-
2f0412f1271b | 10.0.0.0/24 |
| 9724f8a3-4c59-4d7d-9838-82bc682a551c | private-subnet | 3adf0a70-6446-4095-916d-
17d9f753bbe6 | 192.168.100.0/24 |
+--------------------------------------+----------------
+--------------------------------------+------------------+
openstack loadbalancer create --name lb01 --vip-subnet-id private-subnet
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone | None |
| created_at | |
| description | |
| flavor_id | None |
| id | 5a52749c-95e5-49c5-a034-431a5721b4af |
| listeners | |
| name | lb01 |
| operating_status | OFFLINE |
| pools | |
| project_id | b12f95625664420ca31949963b75b74f |
| provider | amphora |
| provisioning_status | PENDING_CREATE |
| updated_at | None |
| vip_address | 192.168.100.220 |
| vip_network_id | 3adf0a70-6446-4095-916d-17d9f753bbe6 |
| vip_port_id | 7710dbbd-00fc-40eb-8c7e-eaa447abf52c |
| vip_qos_policy_id | None |
| vip_subnet_id | 9724f8a3-4c59-4d7d-9838-82bc682a551c |
| tags | |
+---------------------+--------------------------------------+
‫مدتی‬ ‫از‬ ‫پس‬
instance
‫آن‬ ‫وضعیت‬ ‫و‬ . ‫شده‬ ‫ساخته‬
active
: ‫شود‬‫می‬
openstack loadbalancer list
+--------------------------------------+------+----------------------------------
+-----------------+---------------------+------------------+----------+
| id | name | project_id |
vip_address | provisioning_status | operating_status | provider |
+--------------------------------------+------+----------------------------------
+-----------------+---------------------+------------------+----------+
| 5a52749c-95e5-49c5-a034-431a5721b4af | lb01 | b12f95625664420ca31949963b75b74f |
192.168.100.220 | ACTIVE | OFFLINE | amphora |
+--------------------------------------+------+----------------------------------
+-----------------+---------------------+------------------+----------+
listener
‫و‬
Pool
‫و‬ ‫کنید‬ ‫اضافه‬ ‫نمونه‬ ‫به‬ ‫را‬
loadbalancing
‫از‬ ‫استفاده‬ ‫برای‬ ‫را‬
2
‫سرور‬ ‫وب‬ ‫نمونه‬
backend
.‫کنید‬ ‫پیکربندی‬
# create a listener that listens TCP 80
openstack loadbalancer listener create --name listener01 --protocol TCP --protocol-port 80 lb01
+-----------------------------+--------------------------------------+
| Field | Value |
+-----------------------------+--------------------------------------+
| admin_state_up | True |
| connection_limit | -1 |
| created_at | |
| default_pool_id | None |
| default_tls_container_ref | None |
| description | |
| id | 8df57f4f-bcd0-46df-aafd-fdd77e81fa02 |
| insert_headers | None |
| l7policies | |
| loadbalancers | 5a52749c-95e5-49c5-a034-431a5721b4af |
| name | listener01 |
| operating_status | OFFLINE |
| project_id | b12f95625664420ca31949963b75b74f |
| protocol | TCP |
| protocol_port | 80 |
| provisioning_status | PENDING_CREATE |
| sni_container_refs | [] |
| timeout_client_data | 50000 |
| timeout_member_connect | 5000 |
| timeout_member_data | 50000 |
| timeout_tcp_inspect | 0 |
| updated_at | None |
| client_ca_tls_container_ref | None |
| client_authentication | NONE |
| client_crl_container_ref | None |
| allowed_cidrs | None |
| tls_ciphers | None |
| tls_versions | None |
| alpn_protocols | None |
| tags | |
+-----------------------------+--------------------------------------+
# add a pool to the listener
openstack loadbalancer pool create --name pool01 --lb-algorithm ROUND_ROBIN --listener listener01
--protocol TCP
+----------------------+--------------------------------------+
| Field | Value |
+----------------------+--------------------------------------+
| admin_state_up | True |
| created_at | 2021-11-25T00:29:24 |
| description | |
| healthmonitor_id | |
| id | 537b409b-1ccf-475d-b009-106b802d5891 |
| lb_algorithm | ROUND_ROBIN |
| listeners | 8df57f4f-bcd0-46df-aafd-fdd77e81fa02 |
| loadbalancers | 5a52749c-95e5-49c5-a034-431a5721b4af |
| members | |
| name | pool01 |
| operating_status | OFFLINE |
| project_id | b12f95625664420ca31949963b75b74f |
| protocol | TCP |
| provisioning_status | PENDING_CREATE |
| session_persistence | None |
| updated_at | None |
| tls_container_ref | None |
| ca_tls_container_ref | None |
| crl_container_ref | None |
| tls_enabled | False |
| tls_ciphers | None |
| tls_versions | None |
| tags | |
| alpn_protocols | None |
+----------------------+--------------------------------------+
# web server instances
openstack server list
+--------------------------------------+-------+--------+------------------------
+-----------------+----------+
| ID | Name | Status | Networks | Image
| Flavor |
+--------------------------------------+-------+--------+------------------------
+-----------------+----------+
| 267da02c-056a-4678-9d49-c19c802a2cde | Web02 | ACTIVE | private=192.168.100.78 | CentOS-
Stream-8 | m1.small |
| ff35a3bb-d2cd-4c01-9960-a34c6cb5a5a2 | Web01 | ACTIVE | private=192.168.100.44 | CentOS-
Stream-8 | m1.small |
+--------------------------------------+-------+--------+------------------------
+-----------------+----------+
# add web server instances to the pool member
openstack loadbalancer member create --subnet-id private-subnet --address 192.168.100.78 --protocol-
port 80 pool01
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| address | 192.168.100.78 |
| admin_state_up | True |
| created_at | 2021-11-25T00:34:38 |
| id | 48df21bb-b8d6-4af2-a6c8-64400cddc518 |
| name | |
| operating_status | NO_MONITOR |
| project_id | b12f95625664420ca31949963b75b74f |
| protocol_port | 80 |
| provisioning_status | PENDING_CREATE |
| subnet_id | 9724f8a3-4c59-4d7d-9838-82bc682a551c |
| updated_at | None |
| weight | 1 |
| monitor_port | None |
| monitor_address | None |
| backup | False |
| tags | |
+---------------------+--------------------------------------+
openstack loadbalancer member create --subnet-id private-subnet --address 192.168.100.44 --protocol-
port 80 pool01
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| address | 192.168.100.44 |
| admin_state_up | True |
| created_at | 2021-11-25T00:34:51 |
| id | b2d1f0e0-af04-48c6-a6a7-11323081d683 |
| name | |
| operating_status | NO_MONITOR |
| project_id | b12f95625664420ca31949963b75b74f |
| protocol_port | 80 |
| provisioning_status | PENDING_CREATE |
| subnet_id | 9724f8a3-4c59-4d7d-9838-82bc682a551c |
| updated_at | None |
| weight | 1 |
| monitor_port | None |
| monitor_address | None |
| backup | False |
| tags | |
+---------------------+--------------------------------------+
openstack loadbalancer member list pool01
+--------------------------------------+------+----------------------------------
+---------------------+----------------+---------------+------------------+--------+
| id | name | project_id |
provisioning_status | address | protocol_port | operating_status | weight |
+--------------------------------------+------+----------------------------------
+---------------------+----------------+---------------+------------------+--------+
| 48df21bb-b8d6-4af2-a6c8-64400cddc518 | | b12f95625664420ca31949963b75b74f | ACTIVE
| 192.168.100.78 | 80 | NO_MONITOR | 1 |
| b2d1f0e0-af04-48c6-a6a7-11323081d683 | | b12f95625664420ca31949963b75b74f | ACTIVE
| 192.168.100.44 | 80 | NO_MONITOR | 1 |
+--------------------------------------+------+----------------------------------
+---------------------+----------------+---------------+------------------+--------+
# create a floating IP on public network
openstack floating ip create public
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| created_at | 2021-11-25T00:42:32Z |
| description | |
| dns_domain | |
| dns_name | |
| fixed_ip_address | None |
| floating_ip_address | 10.0.0.253 |
| floating_network_id | ac8911e7-afd7-4913-997e-2f0412f1271b |
| id | 30ef7fe3-b45b-4182-a8ad-7331e005d7df |
| name | 10.0.0.253 |
| port_details | None |
| port_id | None |
| project_id | b12f95625664420ca31949963b75b74f |
| qos_policy_id | None |
| revision_number | 0 |
| router_id | None |
| status | DOWN |
| subnet_id | None |
| tags | [] |
| updated_at | |
+---------------------+--------------------------------------+
# assosiate floating IP with VIP of loadbalancer instace
VIPPORT=$(openstack loadbalancer show lb01 | grep vip_port_id | awk {'print $4'})
openstack floating ip set --port $VIPPORT 10.0.0.253
# verify settings to access to the floating IP
curl 10.0.0.253
Web Server on Instance01
curl 10.0.0.253
Web Server on Instance02
curl 10.0.0.253
Web Server on Instance01
curl 10.0.0.253
Web Server on Instance02

Recommandé

شبکه های اجتماعی علمی par
شبکه های اجتماعی علمیشبکه های اجتماعی علمی
شبکه های اجتماعی علمیShahid Beheshti University
1.2K vues30 diapositives
Ceph Block Devices: A Deep Dive par
Ceph Block Devices:  A Deep DiveCeph Block Devices:  A Deep Dive
Ceph Block Devices: A Deep DiveRed_Hat_Storage
7.3K vues42 diapositives
CDNの仕組み(JANOG36) par
CDNの仕組み(JANOG36)CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)J-Stream Inc.
19.6K vues67 diapositives
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月 par
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月VirtualTech Japan Inc.
3.4K vues41 diapositives
Kubernetes networking: Introduction to overlay networks, communication models... par
Kubernetes networking: Introduction to overlay networks, communication models...Kubernetes networking: Introduction to overlay networks, communication models...
Kubernetes networking: Introduction to overlay networks, communication models...Murat Mukhtarov
6.1K vues12 diapositives
Disaggregating Ceph using NVMeoF par
Disaggregating Ceph using NVMeoFDisaggregating Ceph using NVMeoF
Disaggregating Ceph using NVMeoFShapeBlue
1.5K vues39 diapositives

Contenu connexe

Tendances

不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.) par
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)Yasunori Goto
2.1K vues57 diapositives
Accelerating TensorFlow with RDMA for high-performance deep learning par
Accelerating TensorFlow with RDMA for high-performance deep learningAccelerating TensorFlow with RDMA for high-performance deep learning
Accelerating TensorFlow with RDMA for high-performance deep learningDataWorks Summit
3.5K vues44 diapositives
Enable DPDK and SR-IOV for containerized virtual network functions with zun par
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunheut2008
2.5K vues32 diapositives
Rootless Containers par
Rootless ContainersRootless Containers
Rootless ContainersAkihiro Suda
23.1K vues54 diapositives
مرجع oracle mysql |mariadb par
مرجع oracle mysql |mariadb مرجع oracle mysql |mariadb
مرجع oracle mysql |mariadb Yashar Esmaildokht
202 vues449 diapositives
eBPF Basics par
eBPF BasicseBPF Basics
eBPF BasicsMichael Kehoe
2.7K vues63 diapositives

Tendances(20)

不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.) par Yasunori Goto
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)
Yasunori Goto2.1K vues
Accelerating TensorFlow with RDMA for high-performance deep learning par DataWorks Summit
Accelerating TensorFlow with RDMA for high-performance deep learningAccelerating TensorFlow with RDMA for high-performance deep learning
Accelerating TensorFlow with RDMA for high-performance deep learning
DataWorks Summit3.5K vues
Enable DPDK and SR-IOV for containerized virtual network functions with zun par heut2008
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zun
heut20082.5K vues
Rootless Containers par Akihiro Suda
Rootless ContainersRootless Containers
Rootless Containers
Akihiro Suda23.1K vues
TC Flower Offload par Netronome
TC Flower OffloadTC Flower Offload
TC Flower Offload
Netronome4.1K vues
Resilient Storage addon入門 par Moriwaka Kazuo
Resilient Storage addon入門Resilient Storage addon入門
Resilient Storage addon入門
Moriwaka Kazuo16.7K vues
BUD17-310: Introducing LLDB for linux on Arm and AArch64 par Linaro
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
Linaro1.8K vues
SR-IOV+KVM on Debian/Stable par juet-y
SR-IOV+KVM on Debian/StableSR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/Stable
juet-y13.2K vues
CDW: SAN vs. NAS par Spiceworks
CDW: SAN vs. NASCDW: SAN vs. NAS
CDW: SAN vs. NAS
Spiceworks4.3K vues
High-Performance Networking Using eBPF, XDP, and io_uring par ScyllaDB
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uring
ScyllaDB3.3K vues
An Introduction to Linux par anandvaidya
An Introduction to LinuxAn Introduction to Linux
An Introduction to Linux
anandvaidya24.3K vues
NGINX Back to Basics: Ingress Controller (Japanese Webinar) par NGINX, Inc.
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX, Inc.712 vues
Cilium - Container Networking with BPF & XDP par Thomas Graf
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
Thomas Graf4.8K vues

Similaire à Load Balancing-as-a-Service (LBaaS) with octavia in openstack

OpenStack and its service par
OpenStack and its serviceOpenStack and its service
OpenStack and its serviceYashar Esmaildokht
117 vues75 diapositives
Openstack Rally par
Openstack RallyOpenstack Rally
Openstack RallyYashar Esmaildokht
202 vues40 diapositives
Network Load Balancing (NLB) par
Network Load Balancing (NLB)Network Load Balancing (NLB)
Network Load Balancing (NLB)ali torabi
177 vues52 diapositives
Pg autoscaling in ceph par
Pg autoscaling in  cephPg autoscaling in  ceph
Pg autoscaling in cephYashar Esmaildokht
288 vues19 diapositives
rbdmap in ceph par
rbdmap in ceph rbdmap in ceph
rbdmap in ceph Yashar Esmaildokht
320 vues15 diapositives
How Create Waf With Naxsi par
How Create Waf With NaxsiHow Create Waf With Naxsi
How Create Waf With NaxsiYashar Esmaildokht
308 vues68 diapositives

Similaire à Load Balancing-as-a-Service (LBaaS) with octavia in openstack(20)

Network Load Balancing (NLB) par ali torabi
Network Load Balancing (NLB)Network Load Balancing (NLB)
Network Load Balancing (NLB)
ali torabi177 vues
PHP Web service - وب سرویس par Parsa Kafi
PHP Web service - وب سرویسPHP Web service - وب سرویس
PHP Web service - وب سرویس
Parsa Kafi1.3K vues
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور... par Muhibullah Aman
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...
Forth exploration dari note-muhibullah aman اکسپلوریشن چهارم- شبکه های کمپیور...
Muhibullah Aman335 vues

Plus de Yashar Esmaildokht

nbd and it's benefits par
nbd and it's benefitsnbd and it's benefits
nbd and it's benefitsYashar Esmaildokht
3 vues54 diapositives
openstack designate par
openstack designateopenstack designate
openstack designateYashar Esmaildokht
93 vues81 diapositives
bcache and cachefs its benefits. par
bcache and cachefs   its benefits. bcache and cachefs   its benefits.
bcache and cachefs its benefits. Yashar Esmaildokht
63 vues36 diapositives
Systemd and its various uses and capabilities. par
Systemd and its various uses and capabilities.Systemd and its various uses and capabilities.
Systemd and its various uses and capabilities.Yashar Esmaildokht
41 vues49 diapositives
radosgw par
radosgw radosgw
radosgw Yashar Esmaildokht
15 vues72 diapositives
cachefs par
cachefs cachefs
cachefs Yashar Esmaildokht
52 vues26 diapositives

Plus de Yashar Esmaildokht(20)

نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys... par Yashar Esmaildokht
 نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys... نحوه ایجاد snapshot  و ایجاد point  در سیستم‌های گنو/لینوکسی  برای ایجاد sys...
نحوه ایجاد snapshot و ایجاد point در سیستم‌های گنو/لینوکسی برای ایجاد sys...
‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬ par Yashar Esmaildokht
‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬
‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬

Load Balancing-as-a-Service (LBaaS) with octavia in openstack

  • 1. ‫حق‬ ‫بسمه‬ Load Balancing-as-a-Service (LBaaS) with : ‫نویسنده‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫مهندس‬ : ‫نسخه‬ 0.1
  • 3. : ‫نویسنده‬ ‫درباره‬ ‫رشته‬ ‫آموخته‬ ‫دانش‬ ‫دخت‬ ‫اسمعیل‬ ‫یاشار‬ ‫بنده‬ cyber security . ‫هستم‬ ‫از‬ ‫بیش‬ ۱۵ . ‫دارم‬ ‫فعالیت‬ ‫سابقه‬ ‫سال‬ ‫مولف‬ - ‫مدرس‬ - ‫مشاور‬ : ‫داد‬ ‫شرح‬ ‫زیر‬ ‫های‬ ‫ساختار‬ ‫در‬ ‫میتوان‬ ‫را‬ ‫بنده‬ ‫های‬ ‫فعالیت‬ ‫جمله‬ ‫از‬ gnu/linux system/network/security/cloud Engineer/administrator & oracle dba | Linux Trainer |devops . (: ‫جدید‬ ‫دنیاهای‬ ‫کشف‬ ‫و‬ ‫تحقیق‬ ‫و‬ ‫مطالعه‬ ‫به‬ ‫مند‬ ‫علقه‬ . ‫کنم‬ ‫اشاره‬ ‫استراتژی‬ ‫های‬ ‫بازی‬ ‫و‬ ‫اوتلو‬ ‫و‬ ‫شطرنج‬ ‫بازی‬ ‫به‬ ‫میتوانم‬ ‫من‬ ‫های‬ ‫سرگرمی‬ ‫از‬ ‫واقع‬ ‫در‬ ‫تبریز‬ ‫لگ‬ ‫گذاران‬ ‫بنیان‬ ‫از‬ ‫یکی‬ ‫و‬ ‫لینوکس‬/‫گنو‬ ‫و‬ ‫باز‬ ‫متن‬ ‫دنیای‬ ‫عاشق‬ . ‫هستم‬ ‫عاشق‬ ‫یک‬ ‫من‬ : ‫کنید‬ ‫پیدا‬ ‫و‬ ‫کنید‬ ‫دنبال‬ ‫را‬ ‫من‬ ‫میتوانید‬ ‫چطور‬ ‫خب‬ Mob : 09141100257 Telegram ID Telegram channel Instagram Account Linkedin Account . ‫بشنوم‬ ‫را‬ ‫انتقادتون‬ ‫یا‬ ‫پیشنهاد‬ ‫هرگونه‬ ‫میشم‬ ‫خوشحال‬ ‫همچنین‬ : ‫کنید‬ ‫پیدا‬ ‫را‬ ‫من‬ ‫از‬ ‫ی‬ ‫دیگر‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫چطور‬ ‫توی‬ slideshare . ‫کنید‬ ‫پیدا‬ ‫را‬ ‫کردم‬ ‫منتشر‬ ‫آزاد‬ ‫بصورت‬ ‫که‬ ‫دیگری‬ ‫های‬ ‫کتاب‬ ‫میتونید‬ ‫بگردید‬ ‫من‬ ‫اسم‬ ‫دنبال‬ ‫گوگل‬ ‫یا‬ ‫این‬ ‫از‬ ‫میتوانید‬ ‫هم‬ ‫دونیت‬ ‫جهت‬ ‫لینک‬ ‫کنید‬ ‫استفاده‬
  • 4. : ‫مشاوره‬ . ‫بود‬ ‫خواهم‬ ‫شما‬ ‫دسترس‬ ‫در‬ ‫من‬ . ‫فرمایید‬ ‫حاصل‬ ‫تماس‬ . ‫کردم‬ ‫اشاره‬ ‫قبل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫هایی‬ ‫کانال‬ ‫از‬ ‫میتوانید‬ ‫مشاوره‬ ‫جهت‬
  • 5. : ‫به‬ ‫تقدیم‬ ‫خدا‬ ‫شتافت‬ ‫یاریم‬ ‫به‬ ‫که‬ ‫بود‬ ‫او‬ ‫تنها‬ ‫هایم‬ ‫سختی‬ ‫در‬ ‫که‬ ‫چرا‬ ‫مادرم‬ ‫اویم‬ ‫مدیون‬ ‫که‬ ‫را‬ ‫ححبت‬‫م‬ ‫و‬ ‫انسانیت‬ ‫داد‬ ‫یاد‬ ‫و‬ . ‫کرد‬ ‫تقدیم‬ ‫زندگی‬ ‫به‬ ‫مرا‬ ‫که‬ ‫چرا‬ ‫پدرم‬ ‫اویم‬ ‫مدیون‬ ‫و‬ ‫بود‬ ‫من‬ ‫حامی‬ ‫همیشه‬ ‫روحش‬ ‫که‬ ‫عشقم‬ ‫هست‬ ‫و‬ ‫بود‬ ‫مشوقم‬ ‫که‬ ‫سورس‬ ‫اپن‬ ‫جامعه‬ ‫بشریت‬ ‫را‬ ‫هایش‬ ‫دانسته‬ ‫میکند‬ ‫منتشر‬ ‫و‬ ‫میخواند‬ ‫که‬ ‫او‬ ‫و‬ (: ‫هیچ‬ ‫دیگر‬ ‫و‬ ‫جهانی‬ ‫صلح‬ ‫امید‬ ‫به‬ ‫و‬
  • 6. ‫های‬ ‫سرور‬ ‫روی‬ ‫افزاری‬ ‫نرم‬ ‫ترافیک‬ ‫یا‬ ‫و‬ ‫شبکه‬ ‫بار‬ ‫توضیع‬ Cluster ‫تقسم‬ ‫پایداری‬ ‫و‬ ‫کیفیت‬ ‫افزایش‬ ‫و‬ ‫درخواست‬ ‫به‬ ‫پاسخ‬ ‫سازی‬ ‫بهینه‬ ‫جهت‬ ‫یا‬ ‫بار‬ Load Balancing ‫بین‬ ‫بار‬ ‫تقسیم‬ ‫سیستم‬ ‫یا‬ ‫سرور‬ .‫میشود‬ ‫گفته‬ Client ‫و‬ Server Farm ‫نرم‬ ‫و‬ ‫شبکه‬ ‫های‬ ‫ترافیک‬ ‫و‬ ‫میگیرید‬ ‫قرار‬ ‫بروز‬ ‫از‬ ‫ها‬ ‫سرور‬ ‫بین‬ ‫عمل‬ ‫این‬ ‫انجام‬ ‫با‬ ‫که‬ ‫میکند‬ ‫توضیع‬ ‫ها‬ ‫سرور‬ ‫بین‬ ‫گوناگون‬ ‫های‬ ‫متد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫افزار‬ Single Point Failure .‫میشود‬ ‫جلوگیری‬ Load Balancing ‫برای‬ ‫معماری‬ ‫ترین‬ ‫کارامد‬ ‫و‬ ‫بهترین‬ ‫از‬ ‫یکی‬ Application server .‫میباشد‬
  • 7. ‫در‬ ‫افزار‬ ‫نرم‬ ‫لودبالنسینگ‬ ، ‫دو‬ ‫و‬ ‫سه‬ ‫لیه‬ ‫در‬ ‫اینترنت‬ ‫خطوط‬ ‫لودبالنسینگ‬ ، ‫مثال‬ ‫برای‬ . ‫میکنند‬ ‫کار‬ ‫مختلفی‬ ‫های‬ ‫لیه‬ ‫در‬ ‫ها‬ ‫بالنسر‬ ‫لود‬ ‫کنید‬ ‫فرض‬ ‫مثل‬ . ‫بشه‬ ‫شامل‬ ‫میتونه‬ ‫حتی‬ ‫هم‬ ‫رو‬ ‫اینترنت‬ ‫های‬ ‫لینک‬ ‫و‬ ‫نیست‬ ‫ها‬ ‫سرور‬ ‫به‬ ‫مختص‬ ‫تنها‬ ‫لودبالنسینگ‬ . ‫چهار‬ ‫و‬ ‫هفت‬ ‫لیه‬ . ‫اسیاتک‬ ‫دیگه‬ ‫خط‬ ‫و‬ ‫انلین‬ ‫پارس‬ ‫خط‬ ‫یه‬ ‫مثل‬ ، ‫کنید‬ ‫تهیه‬ ‫اینترنت‬ ‫مختلف‬ ‫خطوط‬ ‫میتونید‬ ، ‫هستید‬ ‫شرکت‬ ‫یک‬ ‫یا‬ ‫نت‬ ‫کافی‬ ‫یک‬ ‫صاحب‬ ‫دیگه‬ ‫و‬ ‫کرد‬ ‫خواهد‬ ‫شدن‬ ‫توزیع‬ ‫به‬ ‫شروع‬ ‫اسیاتک‬ ، ‫شد‬ ‫مشکل‬ ‫دچار‬ ‫انلین‬ ‫پارس‬ ‫که‬ ‫هرموقع‬ ‫حال‬ SPF . ‫داشت‬ ‫نخواهید‬ ‫منابع‬ ‫مصرف‬ ‫و‬ ‫سرور‬ ‫درگیری‬ ‫که‬ ‫زمانی‬ ‫متد‬ ‫این‬ ‫اندازی‬ ‫راه‬ ‫با‬ Application ‫به‬ ‫را‬ ‫جدید‬ ‫های‬ ‫سرور‬ ‫راحتی‬ ‫به‬ ‫میتوان‬ ‫میرود‬ ‫بال‬ Server Pool ‫جدید‬ ‫سرور‬ ‫شدن‬ ‫اضافه‬ ‫محض‬ ‫به‬ .‫کرد‬ ‫اضافه‬ Request .‫شد‬ ‫خواهد‬ ‫توضیع‬ ‫نیز‬ ‫جدید‬ ‫سرور‬ ‫روی‬ ‫ترافیک‬ ‫و‬ ‫ها‬ ‫وظایف‬ ‫بال‬ ‫توضیحات‬ ‫به‬ ‫توجه‬ ‫با‬ Load Balancer ‫بود‬ ‫خواهد‬ ‫زیر‬ ‫شرح‬ ‫به‬ : • ‫های‬ ‫درخواست‬ ‫توضیع‬ Client ‫ها‬ ‫سرور‬ ‫بین‬ ‫موثر‬ ‫بصورت‬ ‫شبکه‬ ‫ترافیک‬ ‫یا‬ ‫و‬ • ‫درخواست‬ ‫فرستادن‬ ‫با‬ ‫اعتماد‬ ‫و‬ ‫کیفیت‬ ،‫سرویس‬ ‫پایداری‬ ‫از‬ ‫اطمینان‬ Client ‫دسترس‬ ‫در‬ ‫و‬ ‫فعال‬ ‫های‬ ‫سرور‬ ‫سمت‬ ‫به‬ • ‫نیاز‬ ‫صورت‬ ‫در‬ ‫سرور‬ ‫اضافه‬ ‫یا‬ ‫و‬ ‫حذف‬ ‫در‬ ‫پذیری‬ ‫انعطاف‬ ‫ارائه‬
  • 8. ‫مفهوم‬ Clustering ‫و‬ Distribute ‫یک‬ ‫تنها‬ ‫کاربر‬ ‫کلسترینگ‬ ‫در‬ . ‫هست‬ ‫بندی‬ ‫خوشه‬ ‫معنی‬ ‫به‬ ‫کلسترینگ‬ IP ‫سرور‬ ‫چندین‬ ‫قضیه‬ ‫این‬ ‫پشت‬ ‫که‬ ‫حالی‬ ‫در‬ ‫میکنه‬ ‫مشاهده‬ ‫رو‬ ‫رو‬ ‫شما‬ ‫درخواست‬ ‫خودشون‬ ‫بین‬ ‫ها‬ ‫اون‬ ‫و‬ ‫باشه‬ ‫داشته‬ ‫وجود‬ ‫ممکنه‬ LB ‫میدن‬ ‫تحویل‬ ‫شما‬ ‫به‬ ‫پی‬ ‫ای‬ ‫ادرس‬ ‫یک‬ ‫قالب‬ ‫در‬ ‫رو‬ ‫نتیجه‬ ‫و‬ ‫میکنند‬ ‫واژه‬ . Distribute ‫درخواست‬ ‫کردن‬ ‫توزیع‬ : ‫مثال‬ . ‫میکنیم‬ ‫توزیع‬ ‫رو‬ ‫چیزی‬ ‫یک‬ ‫ها‬ ‫اون‬ ‫روی‬ ‫بعد‬ ‫و‬ ‫داریم‬ ‫مشخص‬ ‫چیز‬ ‫تا‬ ‫چند‬ ‫اینکه‬ ‫یعنی‬ ‫روی‬ ‫یوزر‬ ‫های‬ LB . ‫مفهوم‬ SPF ‫و‬ Redundancy ‫اصلح‬ SPF ‫یا‬ Single Point Of Failure ) ‫افزونگی‬ ‫شما‬ ‫که‬ ‫میشه‬ ‫استفاده‬ ‫زمانی‬ Redundancy ‫شبکه‬ ، ‫چیز‬ ‫اون‬ ‫شدن‬ ‫مختل‬ ‫با‬ ‫و‬ ‫ندارید‬ ( ‫میشه‬ ‫این‬ ‫نباشه‬ ‫براش‬ ‫جایگزینی‬ ‫عامل‬ ‫و‬ ‫افته‬ ‫بی‬ ‫کار‬ ‫از‬ ‫روتر‬ ‫و‬ ‫دارید‬ ‫روتر‬ ‫یک‬ ‫اگر‬ ‫شبکه‬ ‫یک‬ ‫توی‬ : ‫مثال‬ . ‫میشه‬ ‫مشکل‬ ‫دچار‬ ‫شما‬ SPF . ‫انواع‬ Load Balancing ‫ها‬ • 1 . ‫لیه‬ ‫در‬ ، ‫اول‬ ‫نوع‬ 4 ‫براساس‬ ‫و‬ ‫میکنه‬ ‫کار‬ IP . ‫هست‬ ‫پورت‬ ‫و‬ • 2 . ‫لیه‬ ‫در‬ ، ‫دوم‬ ‫نوع‬ 7 . ‫هست‬ ‫افزاری‬ ‫نرم‬ ‫بالنسر‬ ‫لود‬ ‫و‬ ‫میکنه‬ ‫کار‬ • 3 . ، ‫سوم‬ ‫نوع‬ GSLB ‫مخفف‬ ‫که‬ Global server load balancing ‫بالنسینگ‬ ‫لود‬ ‫عملیات‬ ‫و‬ ‫نمیگیره‬ ‫نظر‬ ‫در‬ ‫رو‬ ‫فاصله‬ ‫هست‬ ‫عملیات‬ ‫حال‬ ‫این‬ ‫با‬ ‫و‬ ‫باشه‬ ‫تهران‬ ‫در‬ ‫دیگری‬ ‫و‬ ‫مشهد‬ ‫در‬ ‫میتونه‬ ‫ها‬ ‫سرور‬ ‫از‬ ‫یکی‬ ‫مثال‬ ‫برای‬ . ‫نیست‬ ‫جغرافیایی‬ ‫نقطه‬ ‫یک‬ ‫به‬ ‫محدود‬ ‫لیه‬ ‫در‬ ‫همچنین‬ ‫و‬ ‫بده‬ ‫انجام‬ ‫رو‬ ‫لودبالنسینگ‬ 4 ‫و‬ 7 . ‫میکنه‬ ‫کار‬ ‫های‬ ‫الگورتیم‬ ‫انواع‬ Load Balancing • 1 . ‫متد‬ Least Connection . ‫میده‬ ‫انجام‬ ‫رو‬ ‫لودبالنسینگ‬ ‫فعال‬ ‫های‬ ‫کانکشن‬ ‫کمترین‬ ‫براساس‬ • 2 . ‫کاری‬ ‫مکانیزم‬ Round Robin .. ‫و‬ ‫دوم‬ ‫سرور‬ ‫دوم‬ ‫درخواست‬ ، ‫اول‬ ‫سرور‬ ‫اول‬ ‫درخواست‬ : ‫مثل‬ . ‫هست‬ ‫صف‬ ‫یک‬ ‫مثل‬ • 3 . ‫متد‬ Least Response Time . ‫پاسخگویی‬ ‫زمان‬ ‫بودن‬ ‫کم‬ ‫و‬ ‫سرور‬ ‫منابع‬ ‫میزان‬ ‫براساس‬ • 4 . ‫روش‬ Least Bandwith ‫سرور‬ ‫باند‬ ‫پهنای‬ ‫بیشترین‬ ‫براساس‬ LB . ‫میده‬ ‫انجام‬ ‫رو‬ • 5 . ‫روش‬ Least Packets . ‫میده‬ ‫انجام‬ ‫پکت‬ ‫میزان‬ ‫کمترین‬ ‫براساس‬ ‫رو‬ ‫بررسی‬ • 6 . ‫متد‬ Custom . ‫کرد‬ ‫استفاده‬ ‫هم‬ ‫با‬ ‫رو‬ ‫بال‬ ‫های‬ ‫روش‬ ‫از‬ ‫چندتا‬ ‫میشه‬ ‫و‬ ‫هست‬ ‫سفارشی‬ ‫صورت‬ ‫به‬ ‫همان‬ ‫یا‬ ‫بار‬ ‫تقسیم‬ Load Balancing ‫میشود‬ ‫انجام‬ ‫چگونه‬ : ‫یک‬ ‫که‬ ‫زمانی‬ Application Server ‫میشود‬ ‫دسترس‬ ‫قابل‬ ‫غیر‬ Load balancer ‫به‬ ‫مربوط‬ ‫های‬ ‫درخواست‬ ‫تمامی‬ Application ‫یکی‬ ‫به‬ ‫را‬
  • 9. ‫سیستم‬ ‫یک‬ ‫از‬ ‫افزاری‬ ‫نرم‬ ‫های‬ ‫درخواست‬ ‫پیشرفته‬ ‫تحویل‬ ‫جهت‬ .‫میدهد‬ ‫ارجاع‬ ‫فعال‬ ‫های‬ ‫سرور‬ ‫از‬ ‫دیگر‬ Application Delivery Controller ‫اختصار‬ ‫به‬ ‫یا‬ ADC ‫و‬ ‫امنیت‬ ‫تا‬ ‫میشود‬ ‫استفاده‬ Performance ‫به‬ ‫درخواست‬ ‫ارجاع‬ ‫زمان‬ ‫در‬ Web .‫یابد‬ ‫افزایش‬ ADC ‫یک‬ ‫فقط‬ Load Balancer ،‫شبکه‬ ‫تحویل‬ ‫جهت‬ ‫پلتفرم‬ ‫یک‬ ‫بلکه‬ ‫نیست‬ Application .‫میباشد‬ ‫بال‬ ‫امنیت‬ ‫و‬ ‫سرعت‬ ‫با‬ ‫مبایل‬ ‫های‬ ‫سرویس‬ ، ‫های‬ ‫الگوریتم‬ ‫و‬ ‫متدها‬ Load Balancing • The Least Connection Method ‫که‬ ‫زمانی‬ : Virtual Server ‫متد‬ ‫از‬ ‫تا‬ ‫میشود‬ ‫کانفیگ‬ ‫طوری‬ Least Connection ‫استفاده‬ .‫میشود‬ ‫انتخاب‬ ‫درخواست‬ ‫به‬ ‫پاسخ‬ ‫جهت‬ ‫دارد‬ ‫را‬ ‫کانکشن‬ ‫تعداد‬ ‫کمترین‬ ‫که‬ ‫سرویسی‬ ‫کند‬ • The Round Robin Method ‫بین‬ ‫ها‬ ‫درخواست‬ ‫گردشی‬ ‫بصورت‬ ‫الگوریتم‬ ‫این‬ ‫در‬ : Server ‫یا‬ service ‫این‬ ‫به‬ .‫میشود‬ ‫تقسیم‬ ‫ها‬ ‫که‬ ‫صورت‬ Server ‫یا‬ ‫ها‬ Service ‫متد‬ ‫این‬ ‫و‬ ‫میشود‬ ‫ارسال‬ ‫لیست‬ ‫دهنده‬ ‫سرویس‬ ‫اول‬ ‫به‬ ‫درخواست‬ ‫و‬ ‫شده‬ ‫لیست‬ ‫یک‬ ‫بصورت‬ ‫ها‬ .‫میابد‬ ‫ادامه‬ ‫گردشی‬ ‫بصورت‬ • The Least Response Time Method ‫کمترین‬ ‫و‬ ‫کانکشن‬ ‫تعداد‬ ‫کمترین‬ ‫که‬ ‫ای‬ ‫دهنده‬ ‫سرویس‬ ‫به‬ ‫درخواست‬ ‫روش‬ ‫این‬ ‫در‬ : .‫میشود‬ ‫ارسال‬ ‫دارد‬ ‫را‬ ‫پاسخدهی‬ ‫زمانی‬ ‫میانگین‬ • The Least Bandwidth Method ‫دهندگان‬ ‫سرویس‬ ‫برای‬ ‫متد‬ ‫این‬ : File Server ‫میزان‬ ‫کمترین‬ ‫که‬ ‫سروری‬ ‫و‬ ‫بوده‬ ‫مناسب‬ .‫میشود‬ ‫انتخاب‬ ‫درخواست‬ ‫پردازش‬ ‫جهت‬ ‫دارد‬ ‫را‬ ‫شبکه‬ ‫ترافیک‬ ‫مصرف‬ • The Least Packets Method ‫میزان‬ ‫کمترین‬ ‫ای‬ ‫دهنده‬ ‫سرویس‬ ‫متد‬ ‫این‬ ‫در‬ : packet ‫انتخاب‬ ‫میکند‬ ‫دریافت‬ ‫مشخص‬ ‫بازه‬ ‫در‬ ‫را‬ .‫میشود‬ • The Custom Load Method ‫جهت‬ ‫متد‬ ‫این‬ ‫که‬ ‫زمانی‬ : Load BAlancing ‫برای‬ ‫را‬ ‫درخواستی‬ ‫هیچ‬ ‫که‬ ‫سرویسی‬ ‫شود‬ ‫انتخاب‬ ‫پردازش‬ ‫حال‬ ‫در‬ ‫ها‬ ‫سرور‬ ‫همه‬ ‫اگر‬ ،‫میشود‬ ‫انتخاب‬ ‫ندارد‬ ‫پردازش‬ Transaction ‫داراست‬ ‫را‬ ‫لود‬ ‫میزان‬ ‫کمترین‬ ‫که‬ ‫سروری‬ ‫بودند‬ .‫میشود‬ ‫انتخاب‬ ‫جدید‬ ‫درخواست‬ ‫پردازش‬ ‫جهت‬ ‫از‬ ‫استفاده‬ ‫دلیل‬ Load Balancing ‫؟‬ ‫چیست‬ ! ‫های‬ ‫سیستم‬ ‫در‬ .‫شد‬ ‫خواهد‬ ‫دهی‬ ‫سرویس‬ ‫در‬ ‫امنیت‬ ‫افزایش‬ ‫و‬ ‫کیفیت‬ ،‫پایداری‬ ‫باعث‬ ‫ساختار‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫صورت‬ ‫هر‬ ‫در‬ Critical
  • 10. Mission ‫که‬ ‫هایی‬ ‫سیستم‬ ‫و‬ High Availability .‫میباشد‬ ‫ضروری‬ ‫بار‬ ‫تقسیم‬ ‫از‬ ‫استفاده‬ ‫است‬ ‫مهم‬ ‫ان‬ ‫در‬ Octavia ‫همان‬ ‫یا‬ ‫بار‬ ‫کننده‬‫توزیع‬ ‫ارائه‬ ‫جهت‬ ‫پروژه‬ ‫این‬ LoadBalancer ‫انجام‬ ‫و‬ Scaling ‫ابر‬ ‫محیط‬ ‫در‬ Openstack .‫است‬ ‫یافته‬ ‫توسعه‬ ‫و‬ ‫شده‬ ‫معرفی‬ ‫از‬ ‫پروژه‬ ‫این‬ LBaaS ‫توسط‬ ‫که‬ Neutrun ‫سازی‬‫پیاده‬ ‫مرجع‬ ‫گفت‬ ‫توان‬‫می‬ ‫و‬ ‫بوده‬ ‫مجزا‬ ،‫شود‬‫می‬ ‫ارائه‬ LBaaS v2 ‫توزیع‬ ‫کار‬ ‫تواند‬‫می‬ ‫و‬ ‫است‬ ‫بین‬ ‫را‬ ‫بار‬ instance ‫سرورهای‬ ،‫ها‬ Bare Metal ‫یک‬ ‫مانند‬ ‫که‬ ‫فیزیکی‬ ‫)سرورهای‬ Nova Instance ‫به‬ Openstack ‫یا‬ ‫است‬ ‫شده‬ ‫معرفی‬ ironic ‫انجام‬ ‫و‬ ‫تقاضا‬ ‫اساس‬ ‫بر‬ ‫بار‬ ‫توزیع‬ ،‫کرد‬ ‫مطرح‬ ‫سرویس‬ ‫این‬ ‫برای‬ ‫توان‬‫می‬ ‫که‬ ‫ای‬‫برجسته‬ ‫ویژگی‬ ‫از‬ .‫دهد‬ ‫انجام‬ ‫کانتینرها‬ ‫و‬ ( Scaling ‫مانند‬ ‫اجزا‬ ‫دیگر‬ ‫با‬ ،‫خود‬ ‫وظیفه‬ ‫انجام‬ ‫جهت‬ ‫پروژه‬ ‫این‬ .‫است‬ ‫زمان‬‫هم‬ ‫صورت‬‫به‬ ‫و‬ ‫افقی‬ ‫صورت‬‫به‬ Nova، Neutron، Keystone، Glance .… ‫و‬ .‫است‬ ‫تعامل‬ ‫در‬ ‫معماری‬ ‫بررسی‬ ‫به‬ ‫ادامه‬ ‫در‬ octavia : ‫پرداخت‬ ‫خواهیم‬ Octavia ‫از‬ ‫ای‬ ‫مجموعه‬ ‫از‬ instance ) ‫آمفورا‬ ‫نام‬ ‫به‬ ‫محاسباتی‬ ‫گره‬ ‫یک‬ ‫در‬ ‫ها‬ amphorae ‫یک‬ ‫طریق‬ ‫از‬ ‫آمفورها‬ ‫با‬ ‫و‬ ‫کند‬ ‫می‬ ‫استفاده‬ ( ) ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫مدیریت‬ ‫شبکه‬ lb-mgmt-net .‫کند‬ ‫می‬ ‫برقرار‬ ‫ارتباط‬ ( Octavia :‫است‬ ‫زیر‬ ‫های‬ ‫سرویس‬ ‫شامل‬ API Controller(octavia_api container) .‫کند‬‫می‬ ‫برقرار‬ ‫ارتباط‬ ‫کنترلر‬ ‫با‬ ‫آمفورا‬ ‫های‬‫نمونه‬ ‫حذف‬ ‫یا‬ ‫نظارت‬ ،‫استقرار‬ ‫و‬ ‫پیکربندی‬ ‫های‬‫روزرسانی‬‫به‬ ‫برای‬ Controller Worker(octavia_worker container)
  • 11. ‫شبکه‬ ‫طریق‬ ‫از‬ ‫را‬ ‫پیکربندی‬ ‫های‬‫روزرسانی‬‫به‬ ‫و‬ ‫پیکربندی‬ LB .‫کند‬‫می‬ ‫ارسال‬ ‫آمفورا‬ ‫به‬ Health Manager ‫خرد‬ ‫شکست‬ ‫رویدادهای‬ ،‫آمفورها‬ ‫غیرمنتظره‬ ‫خرابی‬ ‫صورت‬ ‫در‬ ‫و‬ ‫دارد‬ ‫نظر‬ ‫زیر‬ ‫را‬ ‫آمفورها‬ ‫تک‬ ‫تک‬ ‫سلمت‬ ‫ه‬ .‫کند‬ ‫می‬ ‫کنترل‬ ‫را‬ Housekeeping Manager .‫کند‬ ‫می‬ ‫مدیریت‬ ‫را‬ ‫آمفورا‬ ‫گواهی‬ ‫چرخش‬ ‫و‬ ‫کند‬ ‫می‬ ‫مدیریت‬ ‫را‬ ‫یدکی‬ ‫مخزن‬ ،‫کند‬ ‫می‬ ‫تمیز‬ ‫را‬ (‫شده‬ ‫)حذف‬ ‫قدیمی‬ ‫داده‬ ‫پایگاه‬ ‫سوابق‬ Loadbalancer : api object ‫آدرس‬ .‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫موجودیت‬ ‫که‬ ‫بالیی‬ VIP .‫شود‬ ‫می‬ ‫داده‬ ‫اختصاص‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫ایجاد‬ ‫هنگام‬ ‫ایجاد‬ ‫هنگام‬ loadbalancer ‫نمونه‬ ‫یک‬ ، Amphora .‫شود‬ ‫می‬ ‫اندازی‬ ‫راه‬ ‫محاسباتی‬ ‫گره‬ ‫روی‬ Amphora : ‫پارامترهای‬ ‫با‬ ‫و‬ ‫شوند‬‫می‬ ‫اجرا‬ ‫محاسباتی‬ ‫های‬‫گره‬ ‫روی‬ ‫که‬ ‫هستند‬ ‫هایی‬‫نمونه‬ ‫معمول‬ ‫آمفوراها‬ .‫دهد‬ ‫می‬ ‫انجام‬ ‫را‬ ‫بار‬ ‫تعادل‬ ‫که‬ ‫ای‬ ‫نمونه‬ ‫های‬‫سیاست‬ ،‫سلمت‬ ‫مانیتور‬ ،‫استخر‬ ،‫شنونده‬ ‫به‬ ‫توجه‬ ‫با‬ ‫بار‬ ‫کننده‬‫متعادل‬ L7 ).‫شوند‬‫می‬ ‫پیکربندی‬ ‫اعضا‬ ‫پیکربندی‬ ‫و‬ listener, pool, health monitor, L7 policies, and members configuration . (
  • 12. Listener : ‫یک‬ ‫و‬ .‫بار‬ ‫کننده‬ ‫متعادل‬ ‫سرویس‬ ‫یک‬ listner ‫چندین‬ ‫به‬ ‫است‬ ‫ممکن‬ pool ‫لیه‬ ‫قوانین‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫کند‬ ‫مراجعه‬ 7 ‫جابجا‬ ‫استخرها‬ ‫بین‬ .‫شود‬ Pool : ‫یک‬ .‫کنند‬ ‫می‬ ‫رسیدگی‬ (‫)آمفورا‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫از‬ ‫مشتری‬ ‫های‬ ‫درخواست‬ ‫به‬ ‫که‬ ‫اعضا‬ ‫از‬ ‫گروهی‬ pool ‫یک‬ ‫با‬ ‫تنها‬ listner .‫است‬ ‫مرتبط‬ Member : compute instance ‫یک‬ ‫در‬ (‫)آمفورا‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫پشت‬ ‫ترافیک‬ ‫به‬ ‫که‬ ‫هایی‬ pool .‫دهند‬ ‫می‬ ‫خدمات‬ ‫ترافیک‬ ‫جریان‬ ‫زیر‬ ‫نمودار‬ HTTPS :‫دهد‬ ‫می‬ ‫نشان‬ ‫استخر‬ ‫عضو‬ ‫یک‬ ‫به‬ ‫را‬ ‫سرویس‬ octavia : ‫دارد‬ ‫نیاز‬ ‫هایی‬ ‫کامپونت‬ ‫چه‬ ‫به‬ • Compute (nova) • Networking (enable allowed_address_pairs)
  • 13. • Image (glance) • Identity (keystone) • RabbitMQ • MySQL ‫کجا‬ ‫را‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫واقعی‬ ‫عملکرد‬ ‫که‬ ‫است‬ ‫این‬ ‫بگیرید‬ ‫باید‬ ‫که‬ ‫کلیدی‬ ‫تصمیمات‬ ‫از‬ ‫یکی‬ ،‫مجازی‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫یک‬ ‫طراحی‬ ‫هنگام‬ ‫مانند‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫افزار‬ ‫نرم‬ ‫که‬ ‫است‬ ‫این‬ ‫واضح‬ ‫های‬ ‫گزینه‬ ‫از‬ ‫یکی‬ .‫دهید‬ ‫قرار‬ HAProxy ‫یا‬ NGINX ‫های‬ ‫گره‬ ‫از‬ ‫یکی‬ ‫روی‬ ‫بر‬ ‫را‬ ‫آشکار‬ ‫عیب‬ ‫این‬ ‫دارای‬ ‫رویکرد‬ ‫این‬ ،‫حال‬ ‫این‬ ‫با‬ .‫کنید‬ ‫هدایت‬ ‫ها‬ ‫گره‬ ‫آن‬ ‫طریق‬ ‫از‬ ‫را‬ ‫ترافیک‬ ‫تمام‬ ‫و‬ ‫کنید‬ ‫ایجاد‬ ‫شبکه‬ ‫گره‬ ‫یا‬ ‫کننده‬ ‫کنترل‬ ‫اندازی‬‫راه‬ ‫یک‬ ‫در‬ ‫را‬ ‫خود‬ ‫کننده‬‫کنترل‬ ‫های‬‫گره‬ ،‫البته‬ ،‫اینکه‬ ‫)مگر‬ ‫کند‬‫می‬ ‫معرفی‬ ‫را‬ ‫شکست‬ ‫نقطه‬ ‫یک‬ ‫که‬ ‫است‬ HA ،‫بدتر‬ ‫حتی‬ ،‫و‬ (‫کنید‬ ‫اجرا‬ ‫بار‬ ‫های‬ ‫کننده‬ ‫متعادل‬ ‫تعداد‬ ‫وقتی‬ ‫که‬ ‫است‬ ‫معنی‬ ‫این‬ ‫به‬ ‫که‬ ،‫ها‬ ‫گره‬ ‫از‬ ‫کمی‬ ‫تعداد‬ .‫کند‬‫می‬ ‫وارد‬ ‫شبکه‬ ‫های‬‫رابط‬ ‫روی‬ ‫بر‬ ‫را‬ ‫زیادی‬ ‫بار‬ .‫شود‬ ‫نمی‬ ‫پذیر‬ ‫مقیاس‬ ‫خوبی‬ ‫به‬ ‫حل‬ ‫راه‬ ‫این‬ ،‫یابد‬ ‫می‬ ‫افزایش‬ ‫پایانی‬ ‫نقاط‬ ‫یا‬ ‫مجازی‬ Octavia ‫های‬‫نمونه‬ ‫که‬ ،‫مجازی‬ ‫های‬‫ماشین‬ ‫توسط‬ ‫واقعی‬ ‫بار‬ ‫های‬‫کننده‬‫متعادل‬ .‫کند‬ ‫می‬ ‫انتخاب‬ ‫را‬ ‫متفاوتی‬ ‫رویکرد‬ OpenStack ‫معمولی‬ ‫یک‬ ‫از‬ ‫اما‬ ،‫شوند‬‫می‬ ‫شناسایی‬ ،‫شوند‬‫می‬ ‫اجرا‬ ‫محاسباتی‬ ‫های‬‫گره‬ ‫روی‬ ‫که‬ ‫هستند‬ image ‫افزار‬‫نرم‬ ‫بار‬ ‫کننده‬‫متعادل‬ ‫یک‬ ‫حاوی‬ ‫اختصاصی‬ HAProxy ‫نمونه‬ ‫پیکربندی‬ ‫کنترل‬ ‫برای‬ ‫که‬ ‫کنند‬‫می‬ ‫استفاده‬ ‫عاملی‬ ‫و‬ HAProxy ‫آمفورا‬ ‫که‬ ‫ها‬‫نمونه‬ ‫این‬ ،‫بنابراین‬ .‫شود‬‫می‬ ‫استفاده‬ – ‫بند‬‫زمان‬ ‫توسط‬ ‫شوند‬‫می‬ ‫نامیده‬ – Nova ‫های‬‫نمونه‬ ‫سایر‬ ‫مانند‬ Nova ‫توانند‬‫می‬ ‫و‬ ‫شوند‬‫می‬ ‫مقیاس‬ ‫خوبی‬ ‫به‬ ‫بنابراین‬ ‫و‬ ‫شوند‬‫می‬ ‫ریزی‬‫برنامه‬ ،‫آمفورها‬ ‫کنترل‬ ‫برای‬ .‫کنند‬ ‫استفاده‬ ‫موجود‬ ‫محاسباتی‬ ‫های‬‫گره‬ ‫تمام‬ ‫از‬ octavia ‫از‬ ‫متشکل‬ ‫که‬ ‫کند‬ ‫می‬ ‫استفاده‬ ‫کنترلی‬ ‫مکانیزم‬ ‫یک‬ ‫از‬ w octavia worker ،‫کند‬ ‫می‬ ‫اجرا‬ ‫را‬ ‫ها‬ ‫کننده‬ ‫متعادل‬ ‫بار‬ ‫حذف‬ ‫و‬ ‫رسانی‬ ‫روز‬ ‫به‬ ،‫ایجاد‬ ‫منطق‬ ‫که‬ ‫است‬ health manager ‫را‬ ‫آمفورها‬ ‫که‬ .‫کند‬ ‫مدیریت‬ ‫را‬ ‫استخر‬ ‫تواند‬ ‫می‬ ‫و‬ ‫کند‬ ‫می‬ ‫نظارت‬ ‫سرور‬ API ‫های‬ ‫تماس‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ‫و‬ RPC ‫یعنی‬ ، RabbitMQ ‫آن‬ ‫قبل‬ ‫که‬ ‫همانطور‬ ،‫کنند‬ ‫می‬ ‫برقرار‬ ‫ارتباط‬ ‫یکدیگر‬ ‫با‬ ، ‫های‬ ‫سرویس‬ ‫سایر‬ ‫برای‬ ‫را‬ OpenStack ‫دو‬ ‫ارتباط‬ ‫این‬ .‫کنند‬ ‫برقرار‬ ‫ارتباط‬ ‫آمفورا‬ ‫با‬ ‫باید‬ ‫نیز‬ ‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ،‫حال‬ ‫این‬ ‫با‬ .‫ایم‬ ‫دیده‬ .‫است‬ ‫جهته‬ ،‫شود‬ ‫می‬ ‫اجرا‬ ‫آمفورا‬ ‫هر‬ ‫روی‬ ‫که‬ ‫عاملی‬ REST API . ‫هست‬ ‫بیس‬ ،‫برعکس‬ health manager ‫آمفورها‬ ‫از‬ ‫باید‬ ‫کنترل‬ ‫هواپیمای‬ ‫بنابراین‬ ‫و‬ ‫دهد‬ ‫می‬ ‫گوش‬ ‫آمفورا‬ ‫توسط‬ ‫شده‬ ‫صادر‬ ‫سلمت‬ ‫وضعیت‬ ‫های‬ ‫پیام‬ ‫به‬ .‫باشد‬ ‫دسترسی‬ ‫قابل‬ ‫نیز‬ ‫دارد‬ ‫وجود‬ ‫بار‬ ‫تعادل‬ ‫مدیریت‬ ‫شبکه‬ ‫نام‬ ‫به‬ (‫نوترون‬ ‫)یعنی‬ ‫مجازی‬ ‫شبکه‬ ‫یک‬ ‫که‬ ‫کند‬‫می‬ ‫فرض‬ ‫اکتاویا‬ ،‫طرفه‬ ‫دو‬ ‫ارتباط‬ ‫این‬ ‫کردن‬ ‫فعال‬ ‫برای‬ ‫فرض‬ ‫اکتاویا‬ ،‫این‬ ‫بر‬ ‫علوه‬ .‫کند‬ ‫می‬ ‫متصل‬ ‫شبکه‬ ‫این‬ ‫به‬ ‫را‬ ‫آمفورها‬ ‫تمام‬ ‫اکتاویا‬ ‫سپس‬ .‫شود‬‫می‬ ‫مشخص‬ ‫نصب‬ ‫هنگام‬ ‫در‬ ‫مدیر‬ ‫توسط‬ ‫که‬ ‫به‬ ‫توانند‬‫می‬ ‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ،‫شبکه‬ ‫این‬ ‫طریق‬ ‫از‬ ‫که‬ ‫کند‬‫می‬ API REST . ‫شود‬‫می‬ ‫اجرا‬ ‫آمفورا‬ ‫هر‬ ‫روی‬ ‫که‬ ‫عاملی‬ ‫توسط‬ ‫که‬
  • 14. ‫بار‬ ‫تعادل‬ ‫مدیریت‬ ‫شبکه‬ ‫اتصال‬ ‫و‬ ‫ایجاد‬ ‫ما‬ ‫آمفورهای‬ ‫که‬ ‫باشد‬ ‫مجازی‬ ‫شبکه‬ ‫یک‬ ‫باید‬ ‫این‬ ‫که‬ ‫بیاورید‬ ‫یاد‬ ‫به‬ .‫شد‬ ‫ذکر‬ ‫قبل‬ ‫که‬ ‫است‬ ‫بار‬ ،‫کننده‬ ‫متعادل‬ ‫شبکه‬ ‫اندازی‬ ‫راه‬ ‫چالش‬ ‫اولین‬ ‫به‬ ‫آمفورا‬ ‫از‬ ‫ترافیک‬ ‫تا‬ ‫دهد‬ ‫می‬ ‫اجازه‬ ‫و‬ ‫دهد‬ ‫می‬ ‫کنترل‬ ‫صفحه‬ ‫از‬ ‫را‬ ‫آمفورها‬ ‫به‬ ‫دسترسی‬ ‫اجازه‬ ‫که‬ ‫شوند‬ ‫متصل‬ ‫آن‬ ‫به‬ health manager .‫دارد‬ ‫وجود‬ ‫گزینه‬ ‫چندین‬ ‫شبکه‬ ‫این‬ ‫ساخت‬ ‫برای‬ .‫برسد‬ ‫تگ‬ ‫یک‬ ‫یا‬ ‫فیزیکی‬ ‫رابط‬ ‫یک‬ ،‫بنابراین‬ .‫کنیم‬ ‫ایجاد‬ ‫منظور‬ ‫این‬ ‫برای‬ ‫اختصاصی‬ ‫دهنده‬ ‫ارائه‬ ‫شبکه‬ ‫یک‬ ‫توانیم‬‫می‬ ‫ما‬ ،‫ابتدا‬ VLAN ‫گره‬ ‫هر‬ ‫در‬ ‫کننده‬ ‫متعادل‬ ‫مدیریت‬ ‫شبکه‬ ‫عنوان‬ ‫به‬ ‫که‬ ‫کنیم‬ ‫می‬ ‫اندازی‬ ‫راه‬ ‫نوترون‬ ‫در‬ ‫را‬ ‫مربوطه‬ ‫دهنده‬ ‫ارائه‬ ‫شبکه‬ ‫یک‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫رزرو‬ ‫شبکه‬ ‫آن‬ ‫برای‬ .‫دهد‬ ‫اجازه‬ ‫شما‬ ‫فیزیکی‬ ‫شبکه‬ ‫زیرساخت‬ ‫که‬ ‫کند‬ ‫می‬ ‫کار‬ ‫صورتی‬ ‫در‬ ‫تنها‬ ‫این‬ ‫که‬ ‫است‬ ‫بدیهی‬ .‫کنیم‬ ‫می‬ ‫استفاده‬ ‫بار‬ ‫پل‬ ‫یک‬ ‫توانیم‬‫می‬ ،‫مثال‬ ‫عنوان‬ ‫به‬ ‫است‬ " ‫"مجازی‬ ‫فیزیکی‬ ‫شبکه‬ ‫یک‬ ‫از‬ ‫استفاده‬ ‫دیگر‬ ‫گزینه‬ ،‫نیست‬ ‫اینطور‬ ‫اگر‬ OVS ‫نوترون‬ ‫از‬ ‫خارج‬ ‫که‬ ‫یک‬ ‫عنوان‬‫به‬ ‫را‬ ‫شبکه‬ ‫این‬ ‫و‬ ‫کنیم‬ ‫متصل‬ ‫هم‬ ‫به‬ ‫همپوشانی‬ ‫شبکه‬ ‫یک‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫ها‬‫پل‬ ‫این‬ ،‫کنیم‬ ‫اندازی‬‫راه‬ ‫گره‬ ‫هر‬ ‫روی‬ ‫شود‬‫می‬ ‫مدیریت‬ ‫پل‬ ‫دلیل‬ ‫به‬ ‫اما‬ ،‫کند‬ ‫کار‬ ‫ها‬ ‫محیط‬ ‫اکثر‬ ‫در‬ ‫باید‬ ‫این‬ .‫دهیم‬‫می‬ ‫قرار‬ ‫دهنده‬‫ارائه‬ ‫شبکه‬ ‫یک‬ ‫آن‬ ‫روی‬ ‫بر‬ ‫که‬ ‫کنیم‬ ‫ارائه‬ ‫نوترون‬ ‫به‬ ‫فیزیکی‬ ‫شبکه‬ .‫کند‬ ‫می‬ ‫ایجاد‬ ‫اضافی‬ ‫سربار‬ ‫یک‬ ،‫گره‬ ‫هر‬ ‫روی‬ ‫نیاز‬ ‫مورد‬ ‫اضافی‬ ‫های‬ ‫شبکه‬ ‫یک‬ ‫از‬ ‫سادگی‬ ‫به‬ ‫توانیم‬‫می‬ ‫ما‬ ‫نهایت‬ ‫در‬ VXLAN ‫دستگاه‬ ‫یک‬ ‫افزودن‬ ‫با‬ ‫و‬ ‫کنیم‬ ‫استفاده‬ ‫بار‬ ‫کننده‬ ‫متعادل‬ ‫مدیریت‬ ‫شبکه‬ ‫عنوان‬ ‫به‬ .‫شویم‬ ‫متصل‬ ‫آن‬ ‫به‬ ‫شبکه‬ ‫گره‬ ‫از‬ ،‫نوترون‬ ‫ادغام‬ ‫پل‬ ‫به‬ ‫اضافی‬ ‫شبکه‬
  • 15. ‫شبکه‬ ‫یک‬ ‫اگر‬ ‫که‬ ‫بیاورید‬ ‫یاد‬ ‫به‬ Neutron VXLAN ‫برچسب‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫را‬ ‫خود‬ ‫شبکه‬ ‫این‬ ،‫کنیم‬ ‫اندازی‬ ‫راه‬ VLAN ‫پل‬ ‫روی‬ ‫محلی‬ ‫عامل‬ ‫که‬ ‫شبکه‬ ‫گره‬ ‫برای‬ ‫خاص‬ ‫طور‬ ‫به‬ ‫این‬ .‫دهد‬ ‫می‬ ‫نشان‬ ‫است‬ ‫متصل‬ ‫شبکه‬ ‫این‬ ‫به‬ ‫پورت‬ ‫یک‬ ‫که‬ ‫ای‬ ‫گره‬ ‫هر‬ ‫ادغام‬ DHCP ‫شبکه‬ ‫برای‬ VXLAN ‫عامل‬ ‫یک‬ ‫نوترون‬ ،‫کنیم‬ ‫می‬ ‫ایجاد‬ ‫را‬ ‫شبکه‬ ‫که‬ ‫هنگامی‬ ،‫بنابراین‬ .‫است‬ ‫صادق‬ ،‫شود‬‫می‬ ‫اجرا‬ ‫آن‬ ‫روی‬ ‫ما‬ DHCP ‫شبکه‬ ‫گره‬ ‫روی‬ ‫را‬ ‫تگ‬ ‫یک‬ ‫و‬ . ‫میکند‬ ‫ایجاد‬ VLAN ‫سازی‬ ‫یکپارچه‬ ‫پل‬ ‫در‬ ‫شبکه‬ ‫این‬ ‫به‬ ‫متعلق‬ ‫ترافیک‬ ‫برای‬ ‫که‬ ‫را‬ ‫محلی‬ br-int .‫دهد‬ ‫می‬ ‫اختصاص‬ ‫دستگاه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫)که‬ ‫ادغام‬ ‫پل‬ ‫به‬ ‫متصل‬ ‫اضافی‬ ‫داخلی‬ ‫پورت‬ ‫یک‬ ‫سادگی‬ ‫به‬ ‫توانیم‬ ‫می‬ ‫اکنون‬ ،‫شبکه‬ ‫گره‬ ‫از‬ ‫شبکه‬ ‫این‬ ‫به‬ ‫اتصال‬ ‫برای‬ ‫تگ‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫شده‬ ‫پیکربندی‬ ‫دسترسی‬ ‫پورت‬ ‫و‬ (‫بود‬ ‫خواهد‬ ‫مشاهده‬ ‫قابل‬ ‫مجازی‬ ‫شبکه‬ VLAN ‫آدرس‬ ‫یک‬ ‫سپس‬ .‫بیاوریم‬ IP ‫به‬ ‫آدرس‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫و‬ ‫دهیم‬ ‫می‬ ‫اختصاص‬ ‫دستگاه‬ ‫این‬ IP ‫شبکه‬ ‫در‬ ‫دیگری‬ ‫پورت‬ ‫هر‬ ‫به‬ ‫شبکه‬ ‫گره‬ ‫از‬ ‫توانیم‬ ‫می‬ ‫اکنون‬ ،‫دروازه‬ ‫عنوان‬ ‫به‬ Neutron VXLAN ‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ‫که‬ ‫همانطور‬ .‫شویم‬ ‫متصل‬ Octavia ‫سرور‬ ‫با‬ API Octavia ‫طریق‬ ‫از‬ RPC ،‫کنند‬ ‫می‬ ‫برقرار‬ ‫ارتباط‬ .‫کنند‬ ‫استفاده‬ ‫آمفورا‬ ‫با‬ ‫ارتباط‬ ‫برای‬ ‫رابط‬ ‫این‬ ‫از‬ ‫بتوانند‬ ‫تا‬ ‫دهیم‬ ‫قرار‬ ‫شبکه‬ ‫گره‬ ‫در‬ ‫را‬ ‫آنها‬ ‫توانیم‬ ‫می‬ ‫این‬ ‫از‬ ‫میتوانید‬ : ‫نکته‬ ansible . ‫کنید‬ ‫استفاده‬ ‫شبکه‬ ‫ساخت‬ ‫برای‬ ‫اتوماتیک‬ ‫بصورت‬ ‫هم‬ ‫فایل‬ ‫نوترون‬ ‫شبکه‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫مجازی‬ ‫شبکه‬ ‫یک‬ VXLAN ‫کنید‬ ‫اضافه‬ ‫زیرشبکه‬ ‫یک‬ ‫و‬ ‫کنید‬ ‫ایجاد‬ ‫معمولی‬
  • 16. ‫پورت‬ ‫به‬ ‫ترافیک‬ ‫تا‬ ‫کنید‬ ‫ایجاد‬ ‫امنیتی‬ ‫های‬‫گروه‬ TCP ‫عامل‬ ‫که‬ amphora ‫آن‬ ‫روی‬ API REST ‫فرض‬‫پیش‬ ‫طور‬‫)به‬ ‫دهد‬‫می‬ ‫نشان‬ ‫را‬ ‫خود‬ ‫پورت‬ 9443 ‫به‬ ‫دسترسی‬ ‫اجازه‬ ‫و‬ ( health manager ) ‫ب‬ UDP ‫پورت‬ ، 5555 ‫ترافیک‬ ‫به‬ ‫که‬ ‫است‬ ‫خوب‬ ‫همچنین‬ .‫کنید‬ ‫ایجاد‬ ‫را‬ ( SSH ‫و‬ ICMP .‫کنند‬ ‫تحلیل‬ ‫و‬ ‫تجزیه‬ ‫را‬ ‫مسائل‬ ‫آمفورا‬ ‫به‬ ‫دسترسی‬ ‫و‬ ‫کردن‬ ‫پینگ‬ ‫با‬ ‫دهید‬ ‫اجازه‬ ‫شبکه‬ ‫در‬ ‫پورت‬ ‫یک‬ ‫اکنون‬ load balancer ‫آدرس‬ ‫یک‬ ‫این‬ .‫کنیم‬ ‫می‬ ‫ایجاد‬ IP ‫استفاده‬ ‫خود‬ ‫پورت‬ ‫برای‬ ‫توانیم‬ ‫می‬ ‫که‬ ‫کند‬ ‫می‬ ‫ذخیره‬ ‫را‬ ‫آدرس‬ ‫تداخل‬ ‫از‬ ‫تا‬ ‫کنیم‬ IP ‫کنیم‬ ‫جلوگیری‬ ‫نوترون‬ ‫با‬ ‫عامل‬ ‫نام‬ ‫فضای‬ ‫تا‬ ‫مانیم‬ ‫می‬ ‫منتظر‬ ‫سپس‬ DHCP ‫تگ‬ ‫و‬ ‫کرده‬ ‫دریافت‬ ‫را‬ ‫مربوطه‬ ‫نوترون‬ ‫پورت‬ ‫شناسه‬ ،‫شود‬ ‫ایجاد‬ VLAN ‫این‬ ‫برای‬ ‫را‬ ‫از‬ ‫پورت‬ OVS DB ‫این‬ ‫از‬ ‫)میتوانید‬ ‫خوانیم‬ ‫می‬ ‫اسکریپت‬ (‫کنید‬ ‫استفاده‬ ‫کار‬ ‫این‬ ‫برای‬ ‫هم‬ ‫شناسه‬ ‫این‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫اکنون‬ VLAN ‫دسترسی‬ ‫پورت‬ ‫یک‬ OVS ‫آدرس‬ ‫یک‬ ،‫کنید‬ ‫ایجاد‬ IP ‫اختصاص‬ ‫مربوطه‬ ‫مجازی‬ ‫شبکه‬ ‫دستگاه‬ ‫به‬ .‫بیاورید‬ ‫بال‬ ‫را‬ ‫دستگاه‬ ‫و‬ ‫دهید‬ ‫عامل‬ ‫که‬ ‫هنگامی‬ OVS . ‫باشد‬ ‫داشته‬ ‫وجود‬ ‫کمی‬ ‫مشکلی‬ ‫شاید‬ ‫پیکربندی‬ ‫این‬ ‫با‬ ،‫شود‬ ‫می‬ ‫مجدد‬ ‫اندازی‬ ‫راه‬ ‫شناسه‬ ،‫مورد‬ ‫این‬ ‫در‬ ‫زیرا‬ VLAN ‫را‬ ‫پیکربندی‬ ‫تا‬ ‫کنیم‬ ‫ایجاد‬ ‫اسکریپت‬ ‫یک‬ ‫باید‬ ‫همچنین‬ ‫ما‬ ‫بنابراین‬ .‫کند‬ ‫تغییر‬ ‫تواند‬ ‫می‬ ‫محلی‬ ‫عامل‬ ‫که‬ ‫زمان‬ ‫هر‬ ‫و‬ ‫کنیم‬ ‫روزرسانی‬‫به‬ OVS ‫فایل‬ ‫یک‬ ‫طریق‬ ‫از‬ ‫را‬ ‫آن‬ ،‫شد‬ ‫اندازی‬‫راه‬ ‫دوباره‬ unit systemd .‫کنیم‬ ‫اجرا‬ ‫مورد‬ ‫در‬ image : ‫ها‬ ‫در‬ ‫باید‬ ،‫شد‬ ‫ساخته‬ ‫تصویر‬ ‫که‬ ‫هنگامی‬ Glance ‫پیکربندی‬ ‫به‬ ‫که‬ ‫شود‬ ‫تگ‬ ‫برچسبی‬ ‫با‬ ‫و‬ ‫شود‬ ‫آپلود‬ Octavia ‫تگ‬ ‫این‬ .‫شد‬ ‫خواهد‬ ‫اضافه‬ ‫نیز‬ ‫توسط‬ ‫بعدا‬ Octavia ‫استفاده‬ ‫برای‬ ‫را‬ ‫طعمی‬ ‫باید‬ ‫ما‬ ،‫این‬ ‫بر‬ ‫علوه‬ .‫شود‬ ‫ایجاد‬ ‫صحیح‬ ‫تصویر‬ ‫یابی‬ ‫مکان‬ ‫برای‬ ‫آمفورا‬ ‫یک‬ ‫که‬ ‫شود‬ ‫می‬ ‫استفاده‬ ‫حداقل‬ ‫به‬ ‫ما‬ ‫که‬ ‫باشید‬ ‫داشته‬ ‫توجه‬ .‫کنیم‬ ‫تنظیم‬ ‫آمفورا‬ ‫برای‬ 1 ‫و‬ ‫رم‬ ‫گیگابایت‬ 2 ‫آمفورا‬ ‫تصویر‬ ‫بتوانیم‬ ‫تا‬ ‫داریم‬ ‫نیاز‬ ‫دیسک‬ ‫فضای‬ ‫گیگابایت‬ . ‫باشید‬ ‫داشته‬ ‫را‬ ‫منابع‬ ‫این‬ ‫شوید‬ ‫مطمئن‬ ‫بنابراین‬ ،‫کنیم‬ ‫اجرا‬ ‫را‬ ‫پیکربندی‬ ‫و‬ ‫کلیدها‬ ،‫ها‬ ‫گواهی‬ ‫کنترل‬ ‫صفحه‬ ‫اجزای‬ ‫که‬ ‫دیدیم‬ ‫بال‬ ‫در‬ Octavia ‫یک‬ ‫از‬ REST API ‫برای‬ ‫شود‬‫می‬ ‫اجرا‬ ‫آمفورا‬ ‫هر‬ ‫روی‬ ‫که‬ ‫عاملی‬ ‫توسط‬ ‫که‬ ‫کنند‬‫می‬ ‫استفاده‬ ‫های‬‫نمونه‬ ‫پیکربندی‬ ‫در‬ ‫تغییراتی‬ ‫ایجاد‬ HAProxy ،‫منظور‬ ‫این‬ ‫برای‬ .‫شود‬ ‫ایمن‬ ‫باید‬ ‫اتصال‬ ‫این‬ ‫که‬ ‫است‬ ‫بدیهی‬ .‫کند‬‫می‬ ‫استفاده‬ Octavia ‫از‬ ‫های‬ ‫گواهینامه‬ TLS .‫کند‬ ‫می‬ ‫استفاده‬
  • 17. ‫گواهی‬ .‫شود‬ ‫می‬ ‫استفاده‬ ‫عامل‬ ‫به‬ ‫اتصال‬ ‫هنگام‬ ‫در‬ ‫هویت‬ ‫احراز‬ ‫برای‬ ‫کنترل‬ ‫صفحه‬ ‫توسط‬ ‫گواهی‬ ‫این‬ .‫دارد‬ ‫وجود‬ ‫مشتری‬ ‫گواهی‬ ،‫اول‬ ‫گواهی‬ ‫که‬ ‫آنجایی‬ ‫از‬ .‫شود‬ ‫ایجاد‬ ‫نصب‬ ‫حین‬ ‫در‬ ‫باید‬ ‫مربوطه‬ ‫کلید‬ ‫و‬ ‫مشتری‬ CA ‫هر‬ ‫در‬ ‫باید‬ ‫شود‬ ‫می‬ ‫استفاده‬ ‫مشتری‬ ‫گواهی‬ ‫امضای‬ ‫برای‬ ‫که‬ ‫برای‬ ‫باید‬ ‫گواهی‬ ‫این‬ ،(‫کند‬ ‫استفاده‬ ‫دریافتی‬ ‫های‬ ‫درخواست‬ ‫تأیید‬ ‫برای‬ ‫آن‬ ‫از‬ ‫بتواند‬ ‫نماینده‬ ‫که‬ ‫طوری‬ ‫)به‬ ‫باشد‬ ‫داشته‬ ‫وجود‬ ‫آمفورا‬ Octavia ‫و‬ ،‫باشد‬ ‫شده‬ ‫شناخته‬ ‫نیز‬ Octavia ‫کرد‬ ‫ایجاد‬ ‫آمفورا‬ .‫کند‬ ‫می‬ ‫توزیع‬ ‫جدید‬ ‫مورد‬ ‫هر‬ ‫در‬ ‫را‬ ‫آن‬ ‫یک‬ ‫توسط‬ ‫اجرا‬ ‫زمان‬ ‫در‬ ‫پویا‬ ‫صورت‬ ‫به‬ ‫و‬ ‫هستند‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫عامل‬ ‫هر‬ ‫برای‬ ‫ها‬ ‫گواهینامه‬ ‫این‬ .‫دارد‬ ‫نیاز‬ ‫سرور‬ ‫گواهی‬ ‫به‬ ‫نماینده‬ ‫هر‬ ،‫ثانیا‬ ‫کنترل‬ ‫صفحه‬ ‫در‬ ‫که‬ ‫گواهی‬ ‫مولد‬ Octavia ‫گواهی‬ ‫یک‬ ‫باید‬ ‫فقط‬ ‫ما‬ ،‫نصب‬ ‫طول‬ ‫در‬ .‫شوند‬ ‫می‬ ‫ایجاد‬ ‫است‬ ‫شده‬ ‫تعبیه‬ CA ‫کلید‬ ‫یک‬ ‫و‬ ‫که‬ ‫کنیم‬ ‫ارائه‬ ‫مربوطه‬ ‫خصوصی‬ Octavia ‫کلید‬ ‫و‬ ‫ها‬ ‫گواهینامه‬ ‫خلصه‬ ‫طور‬ ‫به‬ ‫زیر‬ ‫نمودار‬ .‫کند‬‫می‬ ‫استفاده‬ ‫سرور‬ ‫های‬‫گواهی‬ ‫صدور‬ ‫برای‬ ‫آن‬ ‫از‬ .‫دهد‬ ‫می‬ ‫نشان‬ ‫را‬ ‫مربوطه‬
  • 18. : ‫نصب‬ ‫روش‬ ‫ساخت‬ user ‫سرویس‬ ‫برای‬ octavia : openstack user create --domain default --project service --password servicepassword octavia +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | default_project_id | | domain_id | default | | enabled | True | | id | | name | octavia | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ ‫کاربر‬ ‫برای‬ ‫ادمین‬ ‫رول‬ ‫عنوان‬ ‫به‬ ‫کاربر‬ ‫کردن‬ ‫اضافه‬ octavia openstack role add --project service --user octavia admin ‫کاربر‬ ‫برای‬ ‫سرویس‬ ‫ساخت‬ octavia : openstack service create --name octavia --description "OpenStack LBaaS" load-balancer +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack LBaaS | | enabled | True | | id | | name | octavia | | type | load-balancer | +-------------+----------------------------------+
  • 19. ‫ساخت‬ endpoint : export octavia_api=<ip> openstack endpoint create --region RegionOne load-balancer public http://$octavia_api:9876 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | | | service_name | octavia | | service_type | load-balancer | | url | http://<ip>:9876 | +--------------+----------------------------------+ openstack endpoint create --region RegionOne load-balancer internal http://$octavia_api:9876 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | | | service_name | octavia | | service_type | load-balancer | | url | http://<ip>:9876 | +--------------+----------------------------------+
  • 20. openstack endpoint create --region RegionOne load-balancer admin http://$octavia_api:9876 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | | | service_name | octavia | | service_type | load-balancer | | url | http://<ip>:9876 | +--------------+----------------------------------+ ‫برای‬ ‫دیتابیس‬ ‫ایجاد‬ octavia : ‫یوزر‬ ‫ساخت‬ ‫و‬ MariaDB [(none)]> create database octavia; MariaDB [(none)]> grant all privileges on octavia.* to octavia@'localhost' identified by 'password'; MariaDB [(none)]> grant all privileges on octavia.* to octavia@'%' identified by 'password'; MariaDB [(none)]> flush privileges; ‫در‬ network node ‫سرویس‬ octavia : ‫میکنیم‬ ‫نصب‬ ‫را‬
  • 21. dnf -y install openstack-octavia-api openstack-octavia-health-manager openstack-octavia-housekeeping ‫توسط‬ ‫که‬ ‫گواهی‬ ‫ایجاد‬ LoadBalancer Instance ‫خدمات‬ ‫و‬ Octavia .‫شود‬ ‫می‬ ‫استفاده‬ mkdir -p /etc/octavia/certs/private mkdir ~/work cd ~/work git clone https://opendev.org/openstack/octavia.git cd octavia/bin ./create_dual_intermediate_CA.sh cp -p ./dual_ca/etc/octavia/certs/server_ca.cert.pem /etc/octavia/certs cp -p ./dual_ca/etc/octavia/certs/server_ca-chain.cert.pem /etc/octavia/certs cp -p ./dual_ca/etc/octavia/certs/server_ca.key.pem /etc/octavia/certs/private cp -p ./dual_ca/etc/octavia/certs/client_ca.cert.pem /etc/octavia/certs cp -p ./dual_ca/etc/octavia/certs/client.cert-and-key.pem /etc/octavia/certs/private chown -R octavia /etc/octavia/certs
  • 22. ‫کانفیق‬ octavia : mv /etc/octavia/octavia.conf /etc/octavia/octavia.conf.org vi /etc/octavia/octavia.conf # create new [DEFAULT] # RabbitMQ connection info transport_url = rabbit://openstack:password@<ip> [api_settings] # IP address this host listens bind_host = <ip> bind_port = 9876 auth_strategy = keystone api_base_uri = http://<ip>:9876 # MariaDB connection info [database] connection = mysql+pymysql://octavia:password@<ip>/octavia [health_manager] bind_ip = 0.0.0.0 bind_port = 5555 # Keystone auth info [keystone_authtoken] www_authenticate_uri = http://<ip>:5000 auth_url = http://<ip>:5000 memcached_servers = <ip>:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = octavia password = servicepassword # specify certificates created on [2] [certificates] ca_private_key = /etc/octavia/certs/private/server_ca.key.pem ca_certificate = /etc/octavia/certs/server_ca.cert.pem server_certs_key_passphrase = insecure-key-do-not-use-this-key ca_private_key_passphrase = not-secure-passphrase # specify certificates created on [2] [haproxy_amphora] server_ca = /etc/octavia/certs/server_ca-chain.cert.pem client_cert = /etc/octavia/certs/private/client.cert-and-key.pem
  • 23. # specify certificates created on [2] [controller_worker] client_ca = /etc/octavia/certs/client_ca.cert.pem [oslo_messaging] topic = octavia_prov # Keystone auth info [service_auth] auth_url = http://<ip>:5000 memcached_servers = <ip>:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = octavia password = servicepassword chmod 640 /etc/octavia/octavia.conf chgrp octavia /etc/octavia/octavia.conf su -s /bin/bash octavia -c "octavia-db-manage --config-file /etc/octavia/octavia.conf upgrade head" systemctl enable --now octavia-api octavia-health-manager octavia-housekeeping octavia-worker : ‫فایروال‬ ‫کانفیق‬ firewall-cmd --add-port=9876/tcp firewall-cmd --runtime-to-permanent ‫ایمیج‬ ‫یک‬ ‫ساخت‬ LoadBalancer ‫به‬ ‫کردن‬ ‫اضافه‬ ‫و‬ Glance :
  • 24. dnf -y install openstack-octavia-diskimage-create debootstrap python3-octaviaclient # create an instance image octavia-diskimage-create.sh -d focal # add to Glance openstack image create "Amphora" --tag "Amphora" --file amphora-x64-haproxy.qcow2 --disk-format qcow2 --container-format bare --private --project service # add [flavor] for Amphora instance openstack flavor create --id 100 --vcpus 1 --ram 1024 --disk 5 m1.octavia --private --project service # add a security group for Amphora instance openstack security group create lb-mgmt-sec-group --project service # allow required ports for security group openstack security group rule create --protocol icmp --ingress lb-mgmt-sec-group openstack security group rule create --protocol tcp --dst-port 80:80 lb-mgmt-sec-group openstack security group rule create --protocol tcp --dst-port 443:443 lb-mgmt-sec-group openstack security group rule create --protocol tcp --dst-port 9443:9443 lb-mgmt-sec-group
  • 25. ‫سرویس‬ Octavia : ‫کنید‬ ‫پیکربندی‬ ‫امنیتی‬ ‫گروه‬ ‫شناسه‬ ‫برای‬ ‫را‬ openstack image list : ‫نمونه‬ ‫برای‬ +--------------------------------------+-----------------+--------+ | ID | Name | Status | +--------------------------------------+-----------------+--------+ | dc71ffa4-4a41-4614-bdca-27cd5bc8218b | Amphora | active | | cfce605e-151b-43dd-b743-2c7988d69e96 | CentOS-Stream-8 | active | +--------------------------------------+-----------------+--------+ openstack flavor list --all : ‫نمونه‬ ‫برای‬ +-----+------------+------+------+-----------+-------+-----------+ | ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public | +-----+------------+------+------+-----------+-------+-----------+ | 0 | m1.small | 2048 | 10 | 0 | 1 | True | | 100 | m1.octavia | 1024 | 5 | 0 | 1 | False | +-----+------------+------+------+-----------+-------+-----------+ openstack network list : ‫نمونه‬ ‫برای‬ +--------------------------------------+---------+--------------------------------------+ | ID | Name | Subnets | +--------------------------------------+---------+--------------------------------------+ | 3adf0a70-6446-4095-916d-17d9f753bbe6 | private | 9724f8a3-4c59-4d7d-9838-82bc682a551c | | ac8911e7-afd7-4913-997e-2f0412f1271b | public | 61bf3654-bef1-4ddd-8d23-f2fd41166f4e | +--------------------------------------+---------+--------------------------------------+
  • 26. openstack security group list : ‫نمونه‬ ‫برای‬ +--------------------------------------+-------------------+------------------------ +----------------------------------+------+ | ID | Name | Description | Project | Tags | +--------------------------------------+-------------------+------------------------ +----------------------------------+------+ | 66feb966-fd16-4c49-99d3-d845fd247ea8 | lb-mgmt-sec-group | lb-mgmt-sec-group | 7e53ef14eb894f379ea1929f5defc949 | [] | | 888fd13d-5621-4ca9-96cf-3865021329dd | secgroup01 | secgroup01 | 2decda8bcd724687a1cf05064ab21fdf | [] | | e7b47f71-4cd6-4b91-b1eb-b228856fb842 | default | Default security group | 2decda8bcd724687a1cf05064ab21fdf | [] | +--------------------------------------+-------------------+------------------------ +----------------------------------+------+ vi /etc/octavia/octavia.conf # add into [controller_worker] section [controller_worker] client_ca = /etc/octavia/certs/client_ca.cert.pem amp_image_tag = Amphora # specify [flavor] ID for Amphora instance amp_flavor_id = 100 # specify security group ID Amphora instance amp_secgroup_list = 66feb966-fd16-4c49-99d3-d845fd247ea8 # specify network ID to boot Amphora instance (example below specifies public network [public]) amp_boot_network_list = ac8911e7-afd7-4913-997e-2f0412f1271b network_driver = allowed_address_pairs_driver compute_driver = compute_nova_driver amphora_driver = amphora_haproxy_rest_driver [root@network ~]# systemctl restart octavia-api octavia-health-manager octavia-housekeeping octavia-worker
  • 27. ‫نمونه‬ ‫یک‬ ‫ادامه‬ ‫در‬ Loadbalancer : ‫میکنیم‬ ‫ایجاد‬ openstack subnet list +--------------------------------------+---------------- +--------------------------------------+------------------+ | ID | Name | Network | Subnet | +--------------------------------------+---------------- +--------------------------------------+------------------+ | 61bf3654-bef1-4ddd-8d23-f2fd41166f4e | public-subnet | ac8911e7-afd7-4913-997e- 2f0412f1271b | 10.0.0.0/24 | | 9724f8a3-4c59-4d7d-9838-82bc682a551c | private-subnet | 3adf0a70-6446-4095-916d- 17d9f753bbe6 | 192.168.100.0/24 | +--------------------------------------+---------------- +--------------------------------------+------------------+ openstack loadbalancer create --name lb01 --vip-subnet-id private-subnet +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | admin_state_up | True | | availability_zone | None | | created_at | | | description | | | flavor_id | None | | id | 5a52749c-95e5-49c5-a034-431a5721b4af | | listeners | | | name | lb01 | | operating_status | OFFLINE | | pools | | | project_id | b12f95625664420ca31949963b75b74f | | provider | amphora | | provisioning_status | PENDING_CREATE | | updated_at | None | | vip_address | 192.168.100.220 | | vip_network_id | 3adf0a70-6446-4095-916d-17d9f753bbe6 | | vip_port_id | 7710dbbd-00fc-40eb-8c7e-eaa447abf52c | | vip_qos_policy_id | None | | vip_subnet_id | 9724f8a3-4c59-4d7d-9838-82bc682a551c | | tags | | +---------------------+--------------------------------------+
  • 28. ‫مدتی‬ ‫از‬ ‫پس‬ instance ‫آن‬ ‫وضعیت‬ ‫و‬ . ‫شده‬ ‫ساخته‬ active : ‫شود‬‫می‬ openstack loadbalancer list +--------------------------------------+------+---------------------------------- +-----------------+---------------------+------------------+----------+ | id | name | project_id | vip_address | provisioning_status | operating_status | provider | +--------------------------------------+------+---------------------------------- +-----------------+---------------------+------------------+----------+ | 5a52749c-95e5-49c5-a034-431a5721b4af | lb01 | b12f95625664420ca31949963b75b74f | 192.168.100.220 | ACTIVE | OFFLINE | amphora | +--------------------------------------+------+---------------------------------- +-----------------+---------------------+------------------+----------+ listener ‫و‬ Pool ‫و‬ ‫کنید‬ ‫اضافه‬ ‫نمونه‬ ‫به‬ ‫را‬ loadbalancing ‫از‬ ‫استفاده‬ ‫برای‬ ‫را‬ 2 ‫سرور‬ ‫وب‬ ‫نمونه‬ backend .‫کنید‬ ‫پیکربندی‬ # create a listener that listens TCP 80 openstack loadbalancer listener create --name listener01 --protocol TCP --protocol-port 80 lb01 +-----------------------------+--------------------------------------+ | Field | Value | +-----------------------------+--------------------------------------+ | admin_state_up | True | | connection_limit | -1 | | created_at | | | default_pool_id | None | | default_tls_container_ref | None | | description | | | id | 8df57f4f-bcd0-46df-aafd-fdd77e81fa02 | | insert_headers | None | | l7policies | | | loadbalancers | 5a52749c-95e5-49c5-a034-431a5721b4af | | name | listener01 | | operating_status | OFFLINE | | project_id | b12f95625664420ca31949963b75b74f | | protocol | TCP | | protocol_port | 80 | | provisioning_status | PENDING_CREATE | | sni_container_refs | [] |
  • 29. | timeout_client_data | 50000 | | timeout_member_connect | 5000 | | timeout_member_data | 50000 | | timeout_tcp_inspect | 0 | | updated_at | None | | client_ca_tls_container_ref | None | | client_authentication | NONE | | client_crl_container_ref | None | | allowed_cidrs | None | | tls_ciphers | None | | tls_versions | None | | alpn_protocols | None | | tags | | +-----------------------------+--------------------------------------+ # add a pool to the listener openstack loadbalancer pool create --name pool01 --lb-algorithm ROUND_ROBIN --listener listener01 --protocol TCP +----------------------+--------------------------------------+ | Field | Value | +----------------------+--------------------------------------+ | admin_state_up | True | | created_at | 2021-11-25T00:29:24 | | description | | | healthmonitor_id | | | id | 537b409b-1ccf-475d-b009-106b802d5891 | | lb_algorithm | ROUND_ROBIN | | listeners | 8df57f4f-bcd0-46df-aafd-fdd77e81fa02 | | loadbalancers | 5a52749c-95e5-49c5-a034-431a5721b4af | | members | | | name | pool01 | | operating_status | OFFLINE | | project_id | b12f95625664420ca31949963b75b74f | | protocol | TCP | | provisioning_status | PENDING_CREATE | | session_persistence | None | | updated_at | None | | tls_container_ref | None | | ca_tls_container_ref | None | | crl_container_ref | None | | tls_enabled | False | | tls_ciphers | None | | tls_versions | None | | tags | | | alpn_protocols | None | +----------------------+--------------------------------------+ # web server instances
  • 30. openstack server list +--------------------------------------+-------+--------+------------------------ +-----------------+----------+ | ID | Name | Status | Networks | Image | Flavor | +--------------------------------------+-------+--------+------------------------ +-----------------+----------+ | 267da02c-056a-4678-9d49-c19c802a2cde | Web02 | ACTIVE | private=192.168.100.78 | CentOS- Stream-8 | m1.small | | ff35a3bb-d2cd-4c01-9960-a34c6cb5a5a2 | Web01 | ACTIVE | private=192.168.100.44 | CentOS- Stream-8 | m1.small | +--------------------------------------+-------+--------+------------------------ +-----------------+----------+ # add web server instances to the pool member openstack loadbalancer member create --subnet-id private-subnet --address 192.168.100.78 --protocol- port 80 pool01 +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | address | 192.168.100.78 | | admin_state_up | True | | created_at | 2021-11-25T00:34:38 | | id | 48df21bb-b8d6-4af2-a6c8-64400cddc518 | | name | | | operating_status | NO_MONITOR | | project_id | b12f95625664420ca31949963b75b74f | | protocol_port | 80 | | provisioning_status | PENDING_CREATE | | subnet_id | 9724f8a3-4c59-4d7d-9838-82bc682a551c | | updated_at | None | | weight | 1 | | monitor_port | None | | monitor_address | None | | backup | False | | tags | | +---------------------+--------------------------------------+ openstack loadbalancer member create --subnet-id private-subnet --address 192.168.100.44 --protocol- port 80 pool01 +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | address | 192.168.100.44 | | admin_state_up | True |
  • 31. | created_at | 2021-11-25T00:34:51 | | id | b2d1f0e0-af04-48c6-a6a7-11323081d683 | | name | | | operating_status | NO_MONITOR | | project_id | b12f95625664420ca31949963b75b74f | | protocol_port | 80 | | provisioning_status | PENDING_CREATE | | subnet_id | 9724f8a3-4c59-4d7d-9838-82bc682a551c | | updated_at | None | | weight | 1 | | monitor_port | None | | monitor_address | None | | backup | False | | tags | | +---------------------+--------------------------------------+ openstack loadbalancer member list pool01 +--------------------------------------+------+---------------------------------- +---------------------+----------------+---------------+------------------+--------+ | id | name | project_id | provisioning_status | address | protocol_port | operating_status | weight | +--------------------------------------+------+---------------------------------- +---------------------+----------------+---------------+------------------+--------+ | 48df21bb-b8d6-4af2-a6c8-64400cddc518 | | b12f95625664420ca31949963b75b74f | ACTIVE | 192.168.100.78 | 80 | NO_MONITOR | 1 | | b2d1f0e0-af04-48c6-a6a7-11323081d683 | | b12f95625664420ca31949963b75b74f | ACTIVE | 192.168.100.44 | 80 | NO_MONITOR | 1 | +--------------------------------------+------+---------------------------------- +---------------------+----------------+---------------+------------------+--------+ # create a floating IP on public network openstack floating ip create public +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | created_at | 2021-11-25T00:42:32Z | | description | | | dns_domain | | | dns_name | | | fixed_ip_address | None | | floating_ip_address | 10.0.0.253 | | floating_network_id | ac8911e7-afd7-4913-997e-2f0412f1271b | | id | 30ef7fe3-b45b-4182-a8ad-7331e005d7df | | name | 10.0.0.253 | | port_details | None | | port_id | None | | project_id | b12f95625664420ca31949963b75b74f | | qos_policy_id | None |
  • 32. | revision_number | 0 | | router_id | None | | status | DOWN | | subnet_id | None | | tags | [] | | updated_at | | +---------------------+--------------------------------------+ # assosiate floating IP with VIP of loadbalancer instace VIPPORT=$(openstack loadbalancer show lb01 | grep vip_port_id | awk {'print $4'}) openstack floating ip set --port $VIPPORT 10.0.0.253 # verify settings to access to the floating IP curl 10.0.0.253 Web Server on Instance01 curl 10.0.0.253 Web Server on Instance02 curl 10.0.0.253 Web Server on Instance01 curl 10.0.0.253 Web Server on Instance02