نحوه استقرار NATS – پیام رسانی با کارایی بالا #
NATS را با Docker Compose، JetStream persistence، احراز هویت امن و اتصال کلاینت تأیید شده مستقر کنید.
NATS یک سیستم پیامرسانی سبک و با کارایی بالا است که برای برنامههای توزیعشده و ابری طراحی شده است. این سیستم از انتشار-اشتراک، درخواست-پاسخ و بارهای کاری استریمینگ از طریق JetStream پشتیبانی میکند. NATS به طور گسترده برای ارتباطات میکروسرویسها، سیستمهای رویداد محور، پیامرسانی اینترنت اشیا و خطوط لوله داده بلادرنگ استفاده میشود.
این مقاله نحوه استقرار NATS با استفاده از Docker Compose، فعال کردن JetStream persistence، پیکربندی احراز هویت و مجوز و تأیید اتصال کلاینت با استفاده از NATS CLI را توضیح میدهد.
پیش نیازها #
قبل از شروع نیاز دارید به:
- به عنوان یک کاربر غیر ریشه با امتیازات sudo به یک سرور مبتنی بر اوبونتو ۲۴.۰۴ دسترسی داشته باشید.
- داکر و داکر کامپوز را نصب کنید.
تنظیم ساختار دایرکتوری و متغیرهای محیطی #
در این بخش، ساختار دایرکتوری مورد نیاز برای NATS را ایجاد میکنید و متغیرهای محیطی را در یک فایل .env تعریف میکنید که Docker Compose به طور خودکار آن را بارگذاری میکند.
- دایرکتوری پروژه را ایجاد کنید.console
$ mkdir -p ~/nats-stack/{data,config}
- به دایرکتوری پروژه بروید.console
$ cd ~/nats-stack
- فایل
.envرا ایجاد و ویرایش کنید.console$ nano .envمتغیرهای زیر را اضافه کنید:
iniNATS_CLIENT_PORT=۴۲۲۲ NATS_CLUSTER_PORT=۶۲۲۲
جایگزین کنید:
NATS_CLIENT_PORTبا پورت اتصال کلاینت.NATS_CLUSTER_PORTبا پورت ارتباطی خوشه.
فایل را ذخیره کنید و ببندید.
نصب رابط خط فرمان NATS و ایجاد پیکربندی NATS #
در این بخش، شما رابط خط فرمان NATS را نصب میکنید، اعتبارنامههای امن ایجاد میکنید و NATS را با JetStream، احراز هویت و مجوز پیکربندی میکنید.
- فایل باینری NATS CLI را دانلود کنید.console
$ curl -sf https://binaries.nats.dev/nats-io/natscli/nats@latest | sh
- فایل باینری را به PATH سیستم خود منتقل کنید.console
$ sudo mv nats /usr/local/bin/ - نصب را تأیید کنید.console
$ nats --version - یک هش رمز عبور برای کاربر سیستم یا برنامه ایجاد کنید.console
$ nats server passwdرمز عبور را دو بار وارد کنید و هش تولید شده را کپی کنید.
خروجی شما باید مشابه زیر باشد:
$2a$11$C6sj6xxxxx....این مرحله را برای هر کاربری که میخواهید تعریف کنید، تکرار کنید.
- فایل پیکربندی NATS را ایجاد کنید.console
$ nano config/nats.confپیکربندی زیر را اضافه کنید:
ini# Client port port: ۴۲۲۲ monitor_port: ۸۲۲۲ server_name: "NATS_SERVER_NAME" # System account system_account: SYS accounts { SYS { users = [ { user: "sysadmin", password: "SYSTEM_PASSWORD_HASH" } ] } } # JetStream jetstream { store_dir: "/data/jetstream" max_mem_store: 1GB max_file_store: 5GB } authorization { default_permissions = { publish = "SANDBOX.*" subscribe = ["PUBLIC.>", "_INBOX.>"] } ADMIN = { publish = ">" subscribe = ">" } users = [ {user: USERNAME, password: "USER_PASSWORD_HASH", permissions: $ADMIN} ] }
در پیکربندی بالا:
server_nameسرور NATS را در لاگها، خروجی مانیتورینگ و رویدادهای سیستم شناسایی میکند.system_accountویژگیهای سیستم داخلی مورد نیاز برای نظارت و مدیریت JetStream را فعال میکند.accountsمرزهای احراز هویت را برای کاربران سیستم و برنامه تعریف میکندauthorizationکنترل دسترسی در سطح موضوع را اعمال میکند، با مجموعهای از مجوزهای مدیریتی که دسترسی کامل به انتشار و اشتراک را اعطا میکند.- JetStream امکان ماندگاری پیام را با محدودیتهای حافظه و دیسک تعریفشده فراهم میکند.
قبل از شروع سرویس، مقادیر زیر را جایگزین کنید:
NATS_SERVER_NAMEبا نام سرور توصیفیSYSTEM_PASSWORD_HASHبا هش bcrypt تولید شده برای کاربر سیستم.USERNAMEبا نام کاربری برنامه شما.USER_PASSWORD_HASHبا هش bcrypt تولید شده برای کاربر برنامه.
فایل را ذخیره کنید و ببندید.
راه اندازی با Docker Compose #
در این بخش، شما مانیفست Docker Compose را ایجاد میکنید که NATS را با فعال بودن قابلیت تداوم و نظارت JetStream مستقر میکند.
- مانیفست Docker Compose را ایجاد کنید.console
$ nano docker-compose.yamlمحتوای زیر را اضافه کنید:
yamlservices: nats: image: nats:2.12 container_name: nats command: - "-c" - "/etc/nats/nats.conf" ports: - "${NATS_CLIENT_PORT}:4222" - "${NATS_CLUSTER_PORT}:6222" volumes: - "./data:/data" - "./config/nats.conf:/etc/nats/nats.conf:ro" restart: unless-stopped healthcheck: test: ["CMD", "nats", "server", "ping"] interval: 10s timeout: 5s retries: ۵
فایل را ذخیره کنید و ببندید.
در این مانیفست:
- image: از تصویر رسمی NATS 2.12 استفاده میکند.
- command: پیکربندی سفارشی NATS را در هنگام راهاندازی بارگذاری میکند.
- ports:
۴۲۲۲: اتصالات کلاینت.۸۲۲۲: نقطه پایانی مانیتورینگ (فقط میزبان محلی).۶۲۲۲: ارتباط خوشهای.
- volumes:
./data: پیامهای JetStream همچنان باقی میمانند.../config/nats.conf: پیکربندی سرور را تزریق میکند..
- healthcheck: تأیید میکند که سرور به پینگها پاسخ میدهد.
- restart: unless-stopped:سرویس را به صورت خودکار مجدداً راه اندازی می کند.
- سرویس NATS را شروع کنید.console
$ docker compose up -d - تأیید کنید که سرویس NATS در حال اجرا است.console
$ docker compose psمطمئن شوید که خروجی نشان میدهد کانتینر NATS سالم و در حال اجرا است.
- در صورت نیاز، لاگها را مشاهده کنید.console
$ docker compose logsبرای اطلاعات بیشتر در مورد مدیریت پشته Docker Compose، به مقاله نحوه استفاده از Docker Compose مراجعه کنید.
اتصال NATS را تأیید کنید #
در این بخش، تأیید میکنید که سرور NATS قابل دسترسی است و اتصالات کلاینت را میپذیرد.
اتصال را با استفاده از NATS CLI آزمایش کنید.
$ nats --server nats://sysadmin:SYS_USER_PASSWORD@SERVER_IP:4222 server pingبه جای SYS_USER_PASSWORD و SERVER_IP، رمز عبور کاربر سیستم و IP سرور را وارد کنید.
خروجی:
NATS_SERVER_NAME rtt=338.443125ms
---- ping statistics ----
۱ replies max: 338.00 min: 338.00 avg: 338.00خروجی موفقیتآمیز تأیید میکند که سرور NATS قابل دسترسی و به درستی احراز هویت شده است.
نتیجه گیری #
شما با موفقیت NATS را با استفاده از Docker Compose و با فعال بودن JetStream persistence مستقر کردید. احراز هویت و مجوز امن را پیکربندی کردید، ذخیرهسازی پیامهای پایدار را فعال کردید، پیامهای مورد نیاز را نمایش دادید و اتصال کلاینت را با استفاده از NATS CLI تأیید کردید.