📄 محتوای کامل
NATS را با Docker Compose، JetStream persistence، احراز هویت امن و اتصال کلاینت تأیید شده مستقر کنید.
NATS یک سیستم پیامرسانی سبک و با کارایی بالا است که برای برنامههای توزیعشده و ابری طراحی شده است. این سیستم از انتشار-اشتراک، درخواست-پاسخ و بارهای کاری استریمینگ از طریق JetStream پشتیبانی میکند. NATS به طور گسترده برای ارتباطات میکروسرویسها، سیستمهای رویداد محور، پیامرسانی اینترنت اشیا و خطوط لوله داده بلادرنگ استفاده میشود.
این مقاله نحوه استقرار NATS با استفاده از Docker Compose، فعال کردن JetStream persistence، پیکربندی احراز هویت و مجوز و تأیید اتصال کلاینت با استفاده از NATS CLI را توضیح میدهد.
پیش نیازها
قبل از شروع نیاز دارید به:
- به عنوان یک کاربر غیر ریشه با امتیازات sudo به یک سرور مبتنی بر اوبونتو ۲۴.۰۴ دسترسی داشته باشید.
- داکر و داکر کامپوز را نصب کنید.
تنظیم ساختار دایرکتوری و متغیرهای محیطی
در این بخش، ساختار دایرکتوری مورد نیاز برای NATS را ایجاد میکنید و متغیرهای محیطی را در یک فایل .env تعریف میکنید که Docker Compose به طور خودکار آن را بارگذاری میکند.
- دایرکتوری پروژه را ایجاد کنید. consoleCopy
$ mkdir -p ~/nats-stack/{data,config} - به دایرکتوری پروژه بروید. consoleCopy
$ cd ~/nats-stack
- فایل
.envرا ایجاد و ویرایش کنید. consoleCopy$ nano .env
متغیرهای زیر را اضافه کنید:
iniCopyNATS_CLIENT_PORT=4222 NATS_CLUSTER_PORT=6222
جایگزین کنید:
NATS_CLIENT_PORTبا پورت اتصال کلاینت.NATS_CLUSTER_PORTبا پورت ارتباطی خوشه.
فایل را ذخیره کنید و ببندید.
نصب رابط خط فرمان NATS و ایجاد پیکربندی NATS
در این بخش، شما رابط خط فرمان NATS را نصب میکنید، اعتبارنامههای امن ایجاد میکنید و NATS را با JetStream، احراز هویت و مجوز پیکربندی میکنید.
- فایل باینری NATS CLI را دانلود کنید. consoleCopy
$ curl -sf https://binaries.nats.dev/nats-io/natscli/nats@latest | sh
- فایل باینری را به PATH سیستم خود منتقل کنید. consoleCopy
$ sudo mv nats /usr/local/bin/
- نصب را تأیید کنید. consoleCopy
$ nats --version
- یک هش رمز عبور برای کاربر سیستم یا برنامه ایجاد کنید. consoleCopy
$ nats server passwd
رمز عبور را دو بار وارد کنید و هش تولید شده را کپی کنید.
خروجی شما باید مشابه زیر باشد:
$2a$11$C6sj6xxxxx....این مرحله را برای هر کاربری که میخواهید تعریف کنید، تکرار کنید.
- فایل پیکربندی NATS را ایجاد کنید. consoleCopy
$ nano config/nats.conf
پیکربندی زیر را اضافه کنید:
iniCopy# Client port port: 4222 monitor_port: 8222 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 را ایجاد کنید. consoleCopy
$ nano docker-compose.yaml
محتوای زیر را اضافه کنید:
yamlCopyservices: 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: 5فایل را ذخیره کنید و ببندید.
در این مانیفست:
- image: از تصویر رسمی NATS ۲.۱۲ استفاده میکند.
- command: پیکربندی سفارشی NATS را در هنگام راهاندازی بارگذاری میکند.
- ports:
4222: اتصالات کلاینت.8222: نقطه پایانی مانیتورینگ (فقط میزبان محلی).6222: ارتباط خوشهای.
- volumes:
./data: پیامهای JetStream همچنان باقی میمانند.../config/nats.conf: پیکربندی سرور را تزریق میکند..
- healthcheck: تأیید میکند که سرور به پینگها پاسخ میدهد.
- restart: unless-stopped:سرویس را به صورت خودکار مجدداً راه اندازی می کند.
- سرویس NATS را شروع کنید. consoleCopy
$ docker compose up -d
- تأیید کنید که سرویس NATS در حال اجرا است. consoleCopy
$ docker compose ps
مطمئن شوید که خروجی نشان میدهد کانتینر NATS سالم و در حال اجرا است.
- در صورت نیاز، لاگها را مشاهده کنید. consoleCopy
$ docker compose logs
برای اطلاعات بیشتر در مورد مدیریت پشته Docker Compose، به مقاله نحوه استفاده از Docker Compose مراجعه کنید.
اتصال NATS را تأیید کنید
در این بخش، تأیید میکنید که سرور NATS قابل دسترسی است و اتصالات کلاینت را میپذیرد.
اتصال را با استفاده از NATS CLI آزمایش کنید.
consoleCopy$ 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 ----
1 replies max: 338.00 min: 338.00 avg: 338.00 خروجی موفقیتآمیز تأیید میکند که سرور NATS قابل دسترسی و به درستی احراز هویت شده است.
نتیجه گیری
شما با موفقیت NATS را با استفاده از Docker Compose و با فعال بودن JetStream persistence مستقر کردید. احراز هویت و مجوز امن را پیکربندی کردید، ذخیرهسازی پیامهای پایدار را فعال کردید، پیامهای مورد نیاز را نمایش دادید و اتصال کلاینت را با استفاده از NATS CLI تأیید کردید.