{"id":2731,"date":"2022-07-29T23:13:52","date_gmt":"2022-07-29T14:13:52","guid":{"rendered":"https:\/\/blog.wsd.sh\/?p=2731"},"modified":"2022-07-30T06:15:23","modified_gmt":"2022-07-29T21:15:23","slug":"centos-stram-9-nats-serve-install","status":"publish","type":"post","link":"https:\/\/blog.wsd.sh\/?p=2731","title":{"rendered":"<small>CentOS Stram 9 : NATS server<\/small>"},"content":{"rendered":"<p>Installing via Docker<br \/>\n\uff11\uff0eInstall Docker<\/p>\n<pre>\r\ndnf install docker\r\n<\/pre>\n<p>\uff12\uff0eInstall nats<\/p>\n<pre>\r\n# docker pull nats:latest\r\n<\/pre>\n<p>\uff13\uff0eTo run NATS on Docker:<\/p>\n<pre>\r\n# docker run -p 4222:4222 -ti nats:latest\r\nEmulate Docker CLI using podman. Create \/etc\/containers\/nodocker to quiet msg.\r\n? docker.io\/library\/nats:latest\r\nTrying to pull docker.io\/library\/nats:latest...\r\nGetting image source signatures\r\nCopying blob 28c3b732adf6 done\r\nCopying blob 5e5797f39fa0 done\r\nCopying config 842c053e15 done\r\nWriting manifest to image destination\r\nStoring signatures\r\n[1] 2022\/07\/29 13:55:11.454076 [INF] Starting nats-server\r\n[1] 2022\/07\/29 13:55:11.454119 [INF]   Version:  2.8.4\r\n[1] 2022\/07\/29 13:55:11.454125 [INF]   Git:      [66524ed]\r\n[1] 2022\/07\/29 13:55:11.454131 [INF]   Cluster:  my_cluster\r\n[1] 2022\/07\/29 13:55:11.454137 [INF]   Name:     NDPEOZYCJEJ5ECF6RQY5ARFA34WMKRSBUOYMYJPAQKUKAGOJDFMMRT7T\r\n[1] 2022\/07\/29 13:55:11.454141 [INF]   ID:       NDPEOZYCJEJ5ECF6RQY5ARFA34WMKRSBUOYMYJPAQKUKAGOJDFMMRT7T\r\n[1] 2022\/07\/29 13:55:11.454149 [INF] Using configuration file: nats-server.conf\r\n[1] 2022\/07\/29 13:55:11.454604 [INF] Starting http monitor on 0.0.0.0:8222\r\n[1] 2022\/07\/29 13:55:11.454709 [INF] Listening for client connections on 0.0.0.0:4222\r\n[1] 2022\/07\/29 13:55:11.454894 [INF] Server is ready\r\n[1] 2022\/07\/29 13:55:11.454926 [INF] Cluster name is my_cluster\r\n[1] 2022\/07\/29 13:55:11.454970 [INF] Listening for route connections on 0.0.0.0:6222\r\n<\/pre>\n<p>\uff14\uff0eUsage<br \/>\nBy default the NATS server exposes multiple ports:<\/p>\n<pre>\r\n4222 is for clients.\r\n8222 is an HTTP management port for information reporting.\r\n6222 is a routing port for clustering.\r\nUse -p or -P to customize.\r\nTo run a server with the ports exposed on a docker network:\r\nFirst create the 'docker network' nats\r\n<\/pre>\n<pre>\r\n# docker network create nats\r\nEmulate Docker CLI using podman. Create \/etc\/containers\/nodocker to quiet msg.\r\nnats\r\n# docker run --name nats --network nats --rm -p 4222:4222 -p 8222:8222 nats --http_port 8222\r\nEmulate Docker CLI using podman. Create \/etc\/containers\/nodocker to quiet msg.\r\n[1] 2022\/07\/29 14:24:32.155195 [INF] Starting nats-server\r\n[1] 2022\/07\/29 14:24:32.155225 [INF]   Version:  2.8.4\r\n[1] 2022\/07\/29 14:24:32.155228 [INF]   Git:      [66524ed]\r\n[1] 2022\/07\/29 14:24:32.155230 [INF]   Name:     NDY4CMCUOGZFSEMJYYZIBBPFBRINCDK6XXGYBVFZ5RMC33HWIC5UQZUO\r\n[1] 2022\/07\/29 14:24:32.155239 [INF]   ID:       NDY4CMCUOGZFSEMJYYZIBBPFBRINCDK6XXGYBVFZ5RMC33HWIC5UQZUO\r\n[1] 2022\/07\/29 14:24:32.155684 [INF] Starting http monitor on 0.0.0.0:8222\r\n[1] 2022\/07\/29 14:24:32.155753 [INF] Listening for client connections on 0.0.0.0:4222\r\n[1] 2022\/07\/29 14:24:32.155943 [INF] Server is ready\r\n<\/pre>\n<pre>\r\n# curl http:\/\/127.0.0.1:8222\/routez\r\n{\r\n  \"server_id\": \"NDY4CMCUOGZFSEMJYYZIBBPFBRINCDK6XXGYBVFZ5RMC33HWIC5UQZUO\",\r\n  \"now\": \"2022-07-29T14:32:36.353519474Z\",\r\n  \"num_routes\": 0,\r\n  \"routes\": []\r\n}#\r\n<\/pre>\n<p>\uff15\uff0ecluster<br \/>\n&#8211; nuts<\/p>\n<pre>\r\n# docker run --name nats --network nats --rm -p 4222:4222 -p 8222:8222 nats --http_port 8222 --cluster_name NATS --cluster nats:\/\/0.0.0.0:6222\r\nEmulate Docker CLI using podman. Create \/etc\/containers\/nodocker to quiet msg.\r\n[1] 2022\/07\/29 14:36:56.289258 [INF] Starting nats-server\r\n[1] 2022\/07\/29 14:36:56.289291 [INF]   Version:  2.8.4\r\n[1] 2022\/07\/29 14:36:56.289294 [INF]   Git:      [66524ed]\r\n[1] 2022\/07\/29 14:36:56.289296 [INF]   Cluster:  NATS\r\n[1] 2022\/07\/29 14:36:56.289299 [INF]   Name:     NCSG2BBBV52PUQKNFUJVN7U6DPZBKXBMFIXFGH7MYOIOSWTET3L4DAIH\r\n[1] 2022\/07\/29 14:36:56.289302 [INF]   ID:       NCSG2BBBV52PUQKNFUJVN7U6DPZBKXBMFIXFGH7MYOIOSWTET3L4DAIH\r\n[1] 2022\/07\/29 14:36:56.289806 [INF] Starting http monitor on 0.0.0.0:8222\r\n[1] 2022\/07\/29 14:36:56.289891 [INF] Listening for client connections on 0.0.0.0:4222\r\n[1] 2022\/07\/29 14:36:56.290062 [INF] Server is ready\r\n[1] 2022\/07\/29 14:36:56.290087 [INF] Cluster name is NATS\r\n[1] 2022\/07\/29 14:36:56.290114 [INF] Listening for route connections on 0.0.0.0:6222\r\n<\/pre>\n<p>&#8211; nuts1<\/p>\n<pre>\r\n# docker run --name nats-1 --network nats --rm nats --cluster_name NATS --cluster nats:\/\/0.0.0.0:6222 --routes=nats:\/\/ruser:T0pS3cr3t@nats:6222\r\nEmulate Docker CLI using podman. Create \/etc\/containers\/nodocker to quiet msg.\r\n[1] 2022\/07\/29 14:38:02.762872 [INF] Starting nats-server\r\n[1] 2022\/07\/29 14:38:02.762930 [INF]   Version:  2.8.4\r\n[1] 2022\/07\/29 14:38:02.762937 [INF]   Git:      [66524ed]\r\n[1] 2022\/07\/29 14:38:02.762940 [INF]   Cluster:  NATS\r\n[1] 2022\/07\/29 14:38:02.762943 [INF]   Name:     NBSC2XWENOM2ADIS5SDPM6XUB3OCCMTSJBVSBIULTFD5AADM7H6OQP4X\r\n[1] 2022\/07\/29 14:38:02.762946 [INF]   ID:       NBSC2XWENOM2ADIS5SDPM6XUB3OCCMTSJBVSBIULTFD5AADM7H6OQP4X\r\n[1] 2022\/07\/29 14:38:02.763500 [INF] Listening for client connections on 0.0.0.0:4222\r\n[1] 2022\/07\/29 14:38:02.763700 [INF] Server is ready\r\n[1] 2022\/07\/29 14:38:02.763726 [INF] Cluster name is NATS\r\n[1] 2022\/07\/29 14:38:02.763783 [INF] Listening for route connections on 0.0.0.0:6222\r\n[1] 2022\/07\/29 14:38:02.764744 [INF] 10.89.0.3:6222 - rid:4 - Route connection created\r\n<\/pre>\n<p>&#8211; nuts\u5074\u306bmessage\u304c\u51fa\u308b<\/p>\n<pre>\r\n[1] 2022\/07\/29 14:38:02.764761 [INF] 10.89.0.4:60114 - rid:4 - Route connection created\r\n<\/pre>\n<p>&#8211; nuts2<\/p>\n<pre>\r\n# docker run --name nats-2 --network nats --rm nats --cluster_name NATS --cluster nats:\/\/0.0.0.0:6222 --routes=nats:\/\/ruser:T0pS3cr3t@nats:6222\r\nEmulate Docker CLI using podman. Create \/etc\/containers\/nodocker to quiet msg.\r\n[1] 2022\/07\/29 14:38:52.063476 [INF] Starting nats-server\r\n[1] 2022\/07\/29 14:38:52.063507 [INF]   Version:  2.8.4\r\n[1] 2022\/07\/29 14:38:52.063511 [INF]   Git:      [66524ed]\r\n[1] 2022\/07\/29 14:38:52.063514 [INF]   Cluster:  NATS\r\n[1] 2022\/07\/29 14:38:52.063517 [INF]   Name:     NAYY23JRPVU4DLYGZF3Z25QISK3A7WWQAV5JO7TJ3OOWTBXOHQX4TEXH\r\n[1] 2022\/07\/29 14:38:52.063519 [INF]   ID:       NAYY23JRPVU4DLYGZF3Z25QISK3A7WWQAV5JO7TJ3OOWTBXOHQX4TEXH\r\n[1] 2022\/07\/29 14:38:52.064159 [INF] Listening for client connections on 0.0.0.0:4222\r\n[1] 2022\/07\/29 14:38:52.064365 [INF] Server is ready\r\n[1] 2022\/07\/29 14:38:52.064399 [INF] Cluster name is NATS\r\n[1] 2022\/07\/29 14:38:52.064514 [INF] Listening for route connections on 0.0.0.0:6222\r\n[1] 2022\/07\/29 14:38:52.065462 [INF] 10.89.0.3:6222 - rid:4 - Route connection created\r\n[1] 2022\/07\/29 14:38:52.066121 [INF] 10.89.0.4:35700 - rid:5 - Route connection created\r\n<\/pre>\n<p>&#8211; nuts\u5074\u306bmessage\u304c\u51fa\u308b<\/p>\n<pre>\r\n[1] 2022\/07\/29 14:38:52.065382 [INF] 10.89.0.5:41262 - rid:5 - Route connection created\r\n<\/pre>\n<p>\uff16\uff0eTo verify the routes are connected, you can make a request to the monitoring endpoint on \/routez as follows and confirm that there are now 2 routes:<\/p>\n<pre>\r\n#curl http:\/\/127.0.0.1:8222\/routezz\r\n{\r\n  \"server_id\": \"NCSG2BBBV52PUQKNFUJVN7U6DPZBKXBMFIXFGH7MYOIOSWTET3L4DAIH\",\r\n  \"now\": \"2022-07-29T14:40:58.464745232Z\",\r\n  \"num_routes\": 2,\r\n  \"routes\": [\r\n    {\r\n      \"rid\": 4,\r\n      \"remote_id\": \"NBSC2XWENOM2ADIS5SDPM6XUB3OCCMTSJBVSBIULTFD5AADM7H6OQP4X\",\r\n      \"did_solicit\": false,\r\n      \"is_configured\": false,\r\n      \"ip\": \"10.89.0.4\",\r\n      \"port\": 60114,\r\n      \"start\": \"2022-07-29T14:38:02.764689961Z\",\r\n      \"last_activity\": \"2022-07-29T14:40:58.046908427Z\",\r\n      \"rtt\": \"175\u03bcs\",\r\n      \"uptime\": \"2m55s\",\r\n      \"idle\": \"0s\",\r\n      \"pending_size\": 0,\r\n      \"in_msgs\": 12,\r\n      \"out_msgs\": 9,\r\n      \"in_bytes\": 8855,\r\n      \"out_bytes\": 6626,\r\n      \"subscriptions\": 35\r\n    },\r\n    {\r\n      \"rid\": 5,\r\n      \"remote_id\": \"NAYY23JRPVU4DLYGZF3Z25QISK3A7WWQAV5JO7TJ3OOWTBXOHQX4TEXH\",\r\n      \"did_solicit\": false,\r\n      \"is_configured\": false,\r\n      \"ip\": \"10.89.0.5\",\r\n      \"port\": 41262,\r\n      \"start\": \"2022-07-29T14:38:52.065350756Z\",\r\n      \"last_activity\": \"2022-07-29T14:40:58.046908427Z\",\r\n      \"rtt\": \"209\u03bcs\",\r\n      \"uptime\": \"2m6s\",\r\n      \"idle\": \"0s\",\r\n      \"pending_size\": 0,\r\n      \"in_msgs\": 11,\r\n      \"out_msgs\": 6,\r\n      \"in_bytes\": 8835,\r\n      \"out_bytes\": 5064,\r\n      \"subscriptions\": 35\r\n    }\r\n  ]\r\n}#\r\n<\/pre>\n<p>\uff17\uff0eTesting the Clusters<\/p>\n<pre>\r\n#docker run --network nats --rm -it synadia\/nats-boxx\r\nEmulate Docker CLI using podman. Create \/etc\/containers\/nodocker to quiet msg.\r\n? docker.io\/synadia\/nats-box:latest\r\nTrying to pull docker.io\/synadia\/nats-box:latest...\r\nGetting image source signatures\r\nCopying blob a3ed95caeb02 done\r\nCopying blob 8591fa42d73d done\r\nCopying blob ba3557a56b15 done\r\nCopying blob 417204a428f2 done\r\nCopying blob 248f99e65485 done\r\nCopying blob 6820ef7b0234 done\r\nCopying blob 3b3563957223 done\r\nCopying config ae9af06d3d done\r\nWriting manifest to image destination\r\nStoring signatures\r\n             _             _\r\n _ __   __ _| |_ ___      | |__   _____  __\r\n| '_ \\ \/ _` | __\/ __|_____| '_ \\ \/ _ \\ \\\/ \/\r\n| | | | (_| | |_\\__ \\_____| |_) | (_) >  <\r\n|_| |_|\\__,_|\\__|___\/     |_.__\/ \\___\/_\/\\_\\\r\n\r\nnats-box v0.5.0\r\n73a03d0f6599:~#\r\n<\/pre>\n<pre>\r\n73a03d0f6599:~# nats sub -s nats:\/\/nats:4222 hello &\r\n73a03d0f6599:~# nats pub -s \"nats:\/\/nats-1:4222\" hello first\r\n14:46:39 Subscribing on hello\r\n14:46:39 Published 5 bytes to \"hello\"\r\n[#1] Received on \"hello\"\r\nfirst\r\n\r\n73a03d0f6599:~# nats pub -s \"nats:\/\/nats-2:4222\" hello second\r\n14:47:04 Published 6 bytes to \"hello\"\r\n[#2] Received on \"hello\"\r\nsecond\r\n\r\n73a03d0f6599:~#\r\n<\/pre>\n<p>\uff18\uff0eTest the NATS server to verify it is running.<\/p>\n<pre>\r\n# telnet localhost 4222\r\nTrying ::1...\r\ntelnet: connect to address ::1: Connection refused\r\nTrying 127.0.0.1...\r\nConnected to localhost.\r\nEscape character is '^]'.\r\nINFO {\"server_id\":\"NCSG2BBBV52PUQKNFUJVN7U6DPZBKXBMFIXFGH7MYOIOSWTET3L4DAIH\",\"server_name\":\"NCSG2BBBV52PUQKNFUJVN7U6DPZBKXBMFIXFGH7MYOIOSWTET3L4DAIH\",\"version\":\"2.8.4\",\"proto\":1,\"git_commit\":\"66524ed\",\"go\":\"go1.17.10\",\"host\":\"0.0.0.0\",\"port\":4222,\"headers\":true,\"max_payload\":1048576,\"client_id\":7,\"client_ip\":\"10.89.0.1\",\"cluster\":\"NATS\",\"connect_urls\":[\"10.89.0.3:4222\",\"10.89.0.5:4222\",\"10.89.0.4:4222\"]}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Installing via Docker \uff11\uff0eInstall Docker dnf install docker \uff12\uff0eInstall nats # docker pull nats:latest \uff13\uff0eTo run NA&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/posts\/2731"}],"collection":[{"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2731"}],"version-history":[{"count":15,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/posts\/2731\/revisions"}],"predecessor-version":[{"id":2733,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=\/wp\/v2\/posts\/2731\/revisions\/2733"}],"wp:attachment":[{"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2731"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2731"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.wsd.sh\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}