{"id":6153,"date":"2019-01-04T17:28:15","date_gmt":"2019-01-04T08:28:15","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=6153"},"modified":"2025-09-25T14:35:09","modified_gmt":"2025-09-25T05:35:09","slug":"load-balancing","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/vi\/thu-cong\/camserver\/can-bang-tai","title":{"rendered":"D\u1ef1 ph\u00f2ng\/c\u00e2n b\u1eb1ng t\u1ea3i c\u1ee7a CAMServer"},"content":{"rendered":"<p><style type=\"text\/css\"><!--\ntable, th, td {\n    border: none !important;\n}\n--><\/style><\/p>\n\n\n\n<h2>V\u1ec1 d\u1ef1 ph\u00f2ng v\u00e0 c\u00e2n b\u1eb1ng t\u1ea3i<\/h2>\n\n\n\n<p><code>M\u00e1y ch\u1ee7 CAM<\/code> V\u1edbi k\u1ebf ho\u1ea1ch t\u1ed1i \u01b0u,<span class=\"swl-marker mark_blue\">R\u1ea5t d\u1ec5 d\u00e0ng trong m\u00f4i tr\u01b0\u1eddng t\u1ea1i ch\u1ed7<\/span>M\u00e1y ch\u1ee7 web v\u00e0 video c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp d\u1ef1 ph\u00f2ng v\u00e0 c\u00e2n b\u1eb1ng t\u1ea3i. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p c\u00e1c d\u1ecbch v\u1ee5 ti\u1ebfp t\u1ee5c ho\u1ea1t \u0111\u1ed9ng ngay c\u1ea3 khi m\u1ed9t m\u00e1y ch\u1ee7 ng\u1eebng ho\u1ea1t \u0111\u1ed9ng v\u00e0 ngay c\u1ea3 khi c\u00f3 nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng s\u1eed d\u1ee5ng, qu\u00e1 tr\u00ecnh x\u1eed l\u00fd v\u1eabn c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c ph\u00e2n ph\u1ed1i v\u00e0 c\u00e1c d\u1ecbch v\u1ee5 v\u1eabn c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c cung c\u1ea5p m\u00e0 kh\u00f4ng l\u00e0m gi\u1ea3m hi\u1ec7u su\u1ea5t.<\/p>\n\n\n\n<p>Ngo\u00e0i ra, c\u1ea5u h\u00ecnh ph\u00e2n t\u00e1n <code>M\u00e1y ch\u1ee7 CAM<\/code> Tuy nhi\u00ean, giao ti\u1ebfp th\u1eddi gian th\u1ef1c l\u00e0 c\u00f3 th\u1ec3. V\u00ed d\u1ee5,<code>CAMServer1<\/code> M\u1ed9t kh\u00e1ch h\u00e0ng \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i v\u1edbi<code>CAMServer2<\/code> B\u1ea1n c\u00f3 th\u1ec3 tr\u00f2 chuy\u1ec7n ho\u1eb7c t\u1ed5 ch\u1ee9c h\u1ed9i th\u1ea3o tr\u00ean web v\u1edbi m\u1ed9t Kh\u00e1ch h\u00e0ng kh\u00e1c \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i v\u1edbi .<\/p>\n\n\n\n<p class=\"is-style-big_icon_point\">- C\u00e2n b\u1eb1ng t\u1ea3i h\u1ed9i ngh\u1ecb truy\u1ec1n h\u00ecnh d\u1ef1a tr\u00ean s\u1ed1 l\u01b0\u1ee3ng h\u1ed9i ngh\u1ecb \u0111ang ho\u1ea1t \u0111\u1ed9ng v\u00e0 s\u1ed1 l\u01b0\u1ee3ng ng\u01b0\u1eddi d\u00f9ng tham gia.<br>\u30fbS\u1ed1 l\u01b0\u1ee3ng h\u1ed9i ngh\u1ecb web \u0111\u1ed3ng th\u1eddi ch\u1ec9 \u0111\u01a1n gi\u1ea3n l\u00e0<code>M\u00e1y ch\u1ee7 CAM<\/code>\u0110i\u1ec1u n\u00e0y kh\u00f4ng th\u1ec3 \u0111\u1ea1t \u0111\u01b0\u1ee3c ch\u1ec9 b\u1eb1ng c\u00e1ch th\u00eam nhi\u1ec1u n\u00fat h\u01a1n. C\u0169ng c\u1ea7n ph\u1ea3i xem x\u00e9t c\u1ea5u h\u00ecnh m\u1ea1ng \u0111\u1ec3 t\u1ea5t c\u1ea3 c\u00e1c h\u1ed9i ngh\u1ecb kh\u00f4ng \u0111\u01b0\u1ee3c chuy\u1ec3n ti\u1ebfp qua c\u00f9ng m\u1ed9t VPN ho\u1eb7c b\u1ed9 \u0111\u1ecbnh tuy\u1ebfn trung t\u00e2m.<\/p>\n\n\n\n<h2>C\u1ea5u h\u00ecnh ph\u00e2n ph\u1ed1i d\u1ef1 ph\u00f2ng\/t\u1ea3i<\/h2>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ecbnh c\u1ea5u h\u00ecnh m\u00f4i tr\u01b0\u1eddng t\u1ed1i \u01b0u theo m\u1ee9c \u0111\u1ed9 y\u00eau c\u1ea7u v\u00e0 chi ph\u00ed c\u1ee7a c\u00f4ng ty b\u1ea1n.<\/p>\n\n\n\n<h3>C\u1ea5u h\u00ecnh kh\u1edfi \u0111\u1ea7u nh\u1ecf<\/h3>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<figure class=\"wp-block-image size-full\"><img width=\"1761\" height=\"1049\" src=\"https:\/\/chat-messenger.com\/wp-content\/uploads\/2024\/05\/image-7.png\" alt=\"\" class=\"wp-image-10911\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<ul><li><strong>Kho:<\/strong>\u0110\u1eb7t DB\/File \u1edf ph\u00eda CAMServer1 v\u00e0 tham chi\u1ebfu n\u00f3 t\u1eeb CAMServer2. Ngay c\u1ea3 trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, t\u1ea5t c\u1ea3 ng\u01b0\u1eddi d\u00f9ng \u0111\u1ec1u c\u00f3 th\u1ec3 chia s\u1ebb d\u1eef li\u1ec7u theo th\u1eddi gian th\u1ef1c.<\/li><li><strong>h\u1ed7 tr\u1ee3<\/strong>: D\u1eef li\u1ec7u DB\/File c\u1ea7n \u0111\u01b0\u1ee3c sao l\u01b0u v\u00e0o CAMServer2 m\u1ed7i ng\u00e0y.<\/li><li><strong>ph\u00e2n ph\u1ed1i t\u1ea3i<\/strong>: C\u00f3 th\u1ec3 c\u00e2n b\u1eb1ng t\u1ea3i b\u1eb1ng c\u00e1ch chia CAMServer \u0111\u01b0\u1ee3c truy c\u1eadp theo ph\u00f2ng ban (ho\u1eb7c bi\u1ebfn n\u00f3 th\u00e0nh h\u1ec7 th\u1ed1ng d\u1ef1 ph\u00f2ng). H\u1ed9i ngh\u1ecb web lu\u00f4n c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c c\u00e2n b\u1eb1ng t\u1ea3i.<\/li><li><strong>kh\u1ea3 d\u1ee5ng<\/strong>: C\u00e0i \u0111\u1eb7t k\u1ebft n\u1ed1i DB khi x\u1ea3y ra l\u1ed7i \u1edf \u0110\u01a1n v\u1ecb 1 <code>cam.serverDatePath<\/code> Trong tr\u01b0\u1eddng h\u1ee3p \u0111\u0129a b\u1ecb h\u1ecfng,<span style=\"color: var(--color_text); font-family: var(--swl-font_family); font-size: var(--swl-fz--content,16px); font-weight: var(--swl-font_weight); letter-spacing: var(--swl-letter_spacing,normal); background-color: var(--color_content_bg);\">h\u1ed7 tr\u1ee3<\/span>\u0111\u00e3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n<span style=\"color: var(--color_text); font-family: var(--swl-font_family); font-size: var(--swl-fz--content,16px); font-weight: var(--swl-font_weight); letter-spacing: var(--swl-letter_spacing,normal); background-color: var(--color_content_bg);\">D\u1eef li\u1ec7u \u0111\u01b0\u1ee3c \u0111\u1ea3m b\u1ea3o \u0111\u1ebfn ng\u00e0y h\u00f4m tr\u01b0\u1edbc.<\/span><\/li><li><strong>tr\u1ecb gi\u00e1<\/strong>:C\u1ea5u h\u00ecnh r\u1ebb nh\u1ea5t. B\u1ea1n c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u v\u1edbi m\u1ed9t c\u1ea5u h\u00ecnh \u0111\u01a1n v\u1ecb v\u00e0 m\u1edf r\u1ed9ng quy m\u00f4 theo t\u1ea3i.<\/li><\/ul>\n<\/div>\n<\/div>\n\n\n\n<h3>C\u1ea5u h\u00ecnh b\u1ed9 nh\u1edb ngo\u00e0i (NAS)<\/h3>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<figure class=\"wp-block-image size-full\"><img width=\"2151\" height=\"1046\" src=\"https:\/\/chat-messenger.com\/wp-content\/uploads\/2024\/05\/image-8.png\" alt=\"\" class=\"wp-image-10912\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<ul><li><strong>Kho<\/strong>: \u0110\u1eb7t DB\/File tr\u00ean Storage NAS ngo\u00e0i c\u00f3 \u0111\u1ed9 b\u1ec1n cao v\u1edbi c\u1ea5u h\u00ecnh RAID v\u00e0 tham kh\u1ea3o c\u1ea3 CAMServer1 v\u00e0 CAMServer2. Ho\u1eb7c ch\u1ec9 \u0111\u1ecbnh NAS \u1ea3o do h\u1ec7 \u0111i\u1ec1u h\u00e0nh m\u00e1y ch\u1ee7 c\u1ee7a n\u1ec1n t\u1ea3ng \u1ea3o h\u00f3a cung c\u1ea5p.<\/li><li><strong>h\u1ed7 tr\u1ee3<\/strong>: Ngay c\u1ea3 v\u1edbi c\u1ea5u h\u00ecnh RAID, c\u1ea7n ph\u1ea3i sao l\u01b0u d\u1eef li\u1ec7u DB\/T\u1ec7p h\u00e0ng ng\u00e0y \u0111\u1ec3 \u0111\u1ec1 ph\u00f2ng c\u00e1c l\u1ed7i ngu\u1ed3n \u0111i\u1ec7n\/v\u1ecf b\u1ecdc v\u00e0 l\u1ed7i do con ng\u01b0\u1eddi.<\/li><li><strong>ph\u00e2n ph\u1ed1i t\u1ea3i<\/strong>: T\u01b0\u01a1ng t\u1ef1 nh\u01b0 c\u1ea5u h\u00ecnh kh\u1edfi \u0111\u1ed9ng nh\u1ecf.<\/li><li><strong>kh\u1ea3 d\u1ee5ng<\/strong>: Khi x\u1ea3y ra s\u1ef1 c\u1ed1,<a href=\"https:\/\/chat-messenger.com\/vi\/thu-cong\/install_verup\/ung-dung-web-cam\/\">Phi\u00ean b\u1ea3n \u1ee9ng d\u1ee5ng web<\/a> N\u1ebfu b\u1ea1n d\u00f9ng <code>cam.clusterhosts<\/code>N\u00f3 c\u00f3 th\u1ec3 ph\u00e1t hi\u1ec7n v\u00e0 t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n sang ch\u1ebf \u0111\u1ed9 d\u1ef1 ph\u00f2ng.<\/li><li><strong>tr\u1ecb gi\u00e1<\/strong>: C\u1ea5u h\u00ecnh t\u01b0\u01a1ng \u0111\u1ed1i r\u1ebb.<\/li><\/ul>\n<\/div>\n<\/div>\n\n\n\n<h3>C\u1ea5u h\u00ecnh l\u01b0u tr\u1eef ngo\u00e0i d\u1ef1 ph\u00f2ng<\/h3>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<figure class=\"wp-block-image size-full\"><img width=\"2661\" height=\"1074\" src=\"https:\/\/chat-messenger.com\/wp-content\/uploads\/2024\/05\/image-9.png\" alt=\"\" class=\"wp-image-10913\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<ol><li><strong>Kho<\/strong>: C\u1ea5u h\u00ecnh s\u1eed d\u1ee5ng m\u00e1y ch\u1ee7 chia s\u1ebb t\u1ec7p d\u1ef1 ph\u00f2ng (Windows Server Failover Clustering + SAN, AWS S3 + rclone, v.v.) v\u00e0 nh\u1ea5n m\u1ea1nh v\u00e0o t\u00ednh kh\u1ea3 d\u1ee5ng cao khi x\u1ea3y ra l\u1ed7i \u0111\u0129a.<\/li><li><strong>h\u1ed7 tr\u1ee3<\/strong>: D\u1eef li\u1ec7u \u0111\u01b0\u1ee3c sao ch\u00e9p t\u1ef1 \u0111\u1ed9ng n\u00ean kh\u00f4ng c\u1ea7n sao l\u01b0u t\u00f9y theo ch\u00ednh s\u00e1ch. Tuy nhi\u00ean, n\u1ebfu b\u1ea1n \u0111ang xem x\u00e9t l\u1ed7i do con ng\u01b0\u1eddi (ch\u1eb3ng h\u1ea1n nh\u01b0 x\u00f3a \u0111\u0129a theo c\u00e1ch th\u1ee7 c\u00f4ng), b\u1ea1n v\u1eabn s\u1ebd c\u1ea7n m\u1ed9t b\u1ea3n sao l\u01b0u.<\/li><li><strong style=\"background-color: var(--color_content_bg); color: var(--color_text); font-family: var(--swl-font_family); font-size: var(--swl-fz--content,16px); letter-spacing: var(--swl-letter_spacing,normal);\">ph\u00e2n ph\u1ed1i t\u1ea3i<\/strong><span style=\"background-color: var(--color_content_bg); color: var(--color_text); font-family: var(--swl-font_family); font-size: var(--swl-fz--content,16px); font-weight: var(--swl-font_weight); letter-spacing: var(--swl-letter_spacing,normal);\">: T\u01b0\u01a1ng t\u1ef1 nh\u01b0 c\u1ea5u h\u00ecnh kh\u1edfi \u0111\u1ed9ng nh\u1ecf.<\/span><\/li><li><strong>kh\u1ea3 d\u1ee5ng<\/strong>: M\u00e1y ch\u1ee7 web gi\u1ed1ng nh\u01b0 c\u1ea5u h\u00ecnh kh\u1edfi \u0111\u1ed9ng nh\u1ecf. C\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n \u0111\u1ed5i ngay c\u1ea3 trong tr\u01b0\u1eddng h\u1ee3p x\u1ea3y ra l\u1ed7i do l\u1ed7i \u1ed5 \u0111\u0129a ho\u1eb7c khung m\u00e1y.<\/li><li><strong>tr\u1ecb gi\u00e1<\/strong>: Chi ph\u00ed gi\u1edbi thi\u1ec7u cao. AWS S3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng v\u1edbi chi ph\u00ed th\u1ea5p nh\u01b0ng \u0111\u00f3 kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t l\u1ef1a ch\u1ecdn n\u1ebfu b\u1ea1n t\u1eadp trung v\u00e0o t\u1ea1i ch\u1ed7.<\/li><\/ol>\n<\/div>\n<\/div>\n\n\n\n<h3>C\u1ea5u h\u00ecnh c\u00e2n b\u1eb1ng t\u1ea3i<\/h3>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<figure class=\"wp-block-image size-full\"><img width=\"2110\" height=\"1078\" src=\"https:\/\/chat-messenger.com\/wp-content\/uploads\/2024\/05\/image-10.png\" alt=\"\" class=\"wp-image-10929\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<ul id=\"block-69008db6-8cd8-4d4e-b11d-b153c56e5de4\"><li><strong>Kho<\/strong>: C\u00f3 th\u1ec3 ch\u1ecdn c\u1ea5u h\u00ecnh kh\u1edfi \u0111\u1ed9ng nh\u1ecf \/ NAS \/ SAN.<\/li><li><strong>h\u1ed7 tr\u1ee3<\/strong>: T\u01b0\u01a1ng t\u1ef1 nh\u01b0 c\u1ea5u h\u00ecnh kh\u1edfi \u0111\u1ed9ng nh\u1ecf\/NAS\/SAN.<\/li><li><strong style=\"background-color: var(--color_content_bg); color: var(--color_text); font-family: var(--swl-font_family); font-size: var(--swl-fz--content,16px); letter-spacing: var(--swl-letter_spacing,normal);\"><strong>ph\u00e2n ph\u1ed1i t\u1ea3i<\/strong><\/strong><span style=\"background-color: var(--color_content_bg); color: var(--color_text); font-family: var(--swl-font_family); font-size: var(--swl-fz--content,16px); font-weight: var(--swl-font_weight); letter-spacing: var(--swl-letter_spacing,normal);\">:B\u1eb1ng c\u00e1ch \u0111\u1eb7t C\u00e2n b\u1eb1ng t\u1ea3i tr\u01b0\u1edbc CAMServer, c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n d\u1ef1 ph\u00f2ng v\u00e0 ph\u00e2n b\u1ed5 t\u1ea3i.<\/span>* <a href=\"#lb-requirements\">Chi ti\u1ebft y\u00eau c\u1ea7u c\u1ea5u h\u00ecnh Load Balancer<\/a>Xin vui l\u00f2ng ki\u1ec3m tra.<\/li><li><strong>kh\u1ea3 d\u1ee5ng<\/strong>: C\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n \u0111\u1ed5i d\u1ef1 ph\u00f2ng cho t\u1ea5t c\u1ea3 c\u00e1c l\u1edbp khi k\u1ebft h\u1ee3p v\u1edbi c\u1ea5u h\u00ecnh b\u1ed9 nh\u1edb ngo\u00e0i d\u1ef1 ph\u00f2ng.<\/li><li><strong>tr\u1ecb gi\u00e1<\/strong>: Chi ph\u00ed gi\u1edbi thi\u1ec7u cao.<\/li><\/ul>\n<\/div>\n<\/div>\n\n\n\n<h2 id=\"load-balancing-settings\">C\u00e0i \u0111\u1eb7t c\u00e2n b\u1eb1ng t\u1ea3i\/d\u1ef1 ph\u00f2ng<\/h2>\n\n\n\n<h3>T\u1ed5ng quan v\u1ec1 c\u1ea5u h\u00ecnh<\/h3>\n\n\n\n<p>\u0110\u1ec3 h\u1ed7 tr\u1ee3 d\u1ef1 ph\u00f2ng v\u00e0 c\u00e2n b\u1eb1ng t\u1ea3i CAMServer, h\u00e3y c\u00e0i \u0111\u1eb7t CAMServer tr\u00ean m\u1ed7i m\u00e1y ch\u1ee7 ph\u00e2n t\u00e1n,<code>CAMServer\/boot.ini<\/code> Th\u00eam m\u1ee5c sau v\u00e0o t\u1eadp tin.<\/p>\n\n\n\n<div class=\"hcb_wrap\" data-no-translation=\"\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cam.clusterHosts=camserver1;camserver2\ncam.clusterHostsDesc=camserver1 \u304c\u30e1\u30a4\u30f3\u30b5\u30fc\u30d0\u3001camserver2 \u306f\u5f85\u6a5f\u7cfb\u30b5\u30fc\u30d0\u3067\u3059\u3002\ncam.serverDatePath=\\\\disk\\CAMServer\\data\ncam.disableLANNetwork=true\n\n# \u30d3\u30c7\u30aa\u30b5\u30fc\u30d0\u306e\u5206\u6563\u8a2d\u5b9a\u3002\u300c\u30b5\u30fc\u30d0=\u30ce\u30fc\u30c9\u5206\u6563\u53c2\u52a0\u6570\u76ee\u5b89\u5024\u300d\u3067\u5b9a\u7fa9\u3002\ncam.videoDomains=camserver1=50;camserver2=50;camserver3=50<\/code><\/pre><\/div>\n\n\n\n<h3 id=\"clusterHosts\">cam.clusterhosts<\/h3>\n\n\n\n<p><code>cam.clusterhosts<\/code> l\u00e0 t\u00ean m\u00e1y ch\u1ee7 (FQDN) c\u1ee7a m\u1ed7i m\u00e1y ch\u1ee7 ph\u00e2n t\u00e1n. <code>;<\/code> Danh s\u00e1ch \u0111\u01b0\u1ee3c ph\u00e2n t\u00e1ch b\u1eb1ng d\u1ea5u .<\/p>\n\n\n\n<h4>Khi kh\u1edfi \u0111\u1ed9ng CAMServer tr\u00ean c\u1ed5ng 443<\/h4>\n\n\n\n<div class=\"hcb_wrap\" data-no-translation=\"\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cam.clusterHosts=camserver1;camserver2 <\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\"><div class=\"wp-block-image is-style-border\">\n<figure class=\"alignleft is-resized\"><img src=\"\/images\/camserver_load-balancing_failover.png\" alt=\"\" width=\"357\" height=\"197\"\/><\/figure><\/div><\/div>\n\n\n\n<div class=\"wp-block-column\">\n<p>N\u1ebfu b\u1ea1n t\u00e1ch CAMServers cho t\u1eebng ph\u00f2ng ban, h\u00e3y vi\u1ebft t\u00ean m\u00e1y ch\u1ee7 c\u1ee5c b\u1ed9 (FQDN) v\u00e0o \u0111\u1ea7u t\u1ec7p ini c\u1ee7a m\u1ed7i CAMServer. Th\u1ee9 t\u1ef1 li\u1ec7t k\u00ea b\u1ecb \u1ea3nh h\u01b0\u1edfng khi ch\u1ecdn m\u00e1y ch\u1ee7 k\u1ebft n\u1ed1i ban \u0111\u1ea7u v\u00e0 m\u00e1y ch\u1ee7 video khi kh\u1edfi \u0111\u1ed9ng. Ngo\u00e0i ra,<a href=\"https:\/\/chat-messenger.com\/vi\/thu-cong\/install_verup\/ung-dung-web-cam\/\">Phi\u00ean b\u1ea3n \u1ee9ng d\u1ee5ng web<\/a> B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng t\u00ednh n\u0103ng n\u00e0y, b\u1ea1n c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n \u0111\u1ed5i m\u00e1y ch\u1ee7 khi c\u00f3 s\u1ef1 c\u1ed1 x\u1ea3y ra.<\/p>\n\n\n\n<p>*N\u1ebfu SSO ho\u1eb7c x\u00e1c th\u1ef1c kh\u00f4ng c\u1ea7n m\u1eadt kh\u1ea9u kh\u00f4ng \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh, b\u1ea1n s\u1ebd ph\u1ea3i \u0111\u0103ng nh\u1eadp l\u1ea1i khi chuy\u1ec3n \u0111\u1ed5i.<\/p>\n<\/div>\n<\/div>\n\n\n\n<h4>Khi kh\u1edfi \u0111\u1ed9ng CAMServer tr\u00ean c\u1ed5ng 8080<\/h4>\n\n\n\n<div class=\"hcb_wrap\" data-no-translation=\"\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cam.clusterHosts=camserver1:8080;camserver2:8080 <\/code><\/pre><\/div>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 \u0111\u1eb7t b\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i L7 tr\u01b0\u1edbc CAMServer v\u00e0 \u0111\u1ec3 CAMServer chuy\u1ec3n ti\u1ebfp \u0111\u1ebfn c\u1ed5ng 8080. C\u00e1c thi\u1ebft l\u1eadp trong tr\u01b0\u1eddng h\u1ee3p \u0111\u00f3 nh\u01b0 tr\u00ean. Trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, camapp s\u1ebd kh\u00f4ng chuy\u1ec3n \u0111\u1ed5i d\u1ef1 ph\u00f2ng v\u00ec b\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i ch\u1ecbu tr\u00e1ch nhi\u1ec7m chuy\u1ec3n \u0111\u1ed5i d\u1ef1 ph\u00f2ng. \u0110\u00e2y l\u00e0 <code>cam.serverURLT\u00ean mi\u1ec1n<\/code>,<code>cam.clusterhosts<\/code> So s\u00e1nh c\u00e1c mi\u1ec1n v\u00e0 ph\u00e1t hi\u1ec7n c\u0169ng nh\u01b0 ki\u1ec3m so\u00e1t s\u1ef1 c\u00f3 m\u1eb7t ho\u1eb7c v\u1eafng m\u1eb7t c\u1ee7a b\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i.<\/p>\n\n\n\n<h3>cam.clusterHostsDesc<\/h3>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\"><div class=\"wp-block-image is-style-border\">\n<figure class=\"alignleft is-resized\"><img src=\"\/images\/camserver_load-balancing_clusterHostsDesc.png\" alt=\"\" width=\"370\" height=\"174\"\/><\/figure><\/div><\/div>\n\n\n\n<div class=\"wp-block-column\">\n<p><code>cam.clusterHostsDesc<\/code> c\u00f3 th\u1ec3 thay \u0111\u1ed5i nh\u1eadn x\u00e9t trong tr\u01b0\u1eddng m\u00f4 t\u1ea3 m\u00e1y ch\u1ee7 ph\u00e2n t\u00e1n.<\/p>\n<\/div>\n<\/div>\n\n\n\n<h3>cam.serverDatePath<\/h3>\n\n\n\n<p><code>cam.serverDatePath<\/code> Ch\u1ec9 \u0111\u1ecbnh DB n\u01a1i l\u01b0u c\u00e1c t\u1ec7p \u0111\u00ednh k\u00e8m \u0111\u00e3 t\u1ea3i l\u00ean. Ch\u1ec9 \u0111\u1ecbnh m\u1ed9t \u0111\u0129a chia s\u1ebb c\u00f3 th\u1ec3 truy c\u1eadp \u0111\u01b0\u1ee3c t\u1eeb c\u00e1c m\u00e1y ch\u1ee7 ph\u00e2n t\u00e1n.<\/p>\n\n\n\n<p class=\"is-style-big_icon_memo\">* Khi ch\u1ec9 \u0111\u1ecbnh m\u1ed9t \u0111\u0129a chia s\u1ebb v\u00e0 ch\u1ea1y d\u1ecbch v\u1ee5 <a rel=\"noreferrer noopener\" href=\"https:\/\/chat-messenger.com\/vi\/thu-cong\/camserver\/launch_camserver_as_windows_service\/#svc_osuser\/\" target=\"_blank\">Ng\u01b0\u1eddi d\u00f9ng h\u1ec7 \u0111i\u1ec1u h\u00e0nh \u0111ang ch\u1ea1y d\u1ecbch v\u1ee5 Windows<\/a>Ph\u1ea3i \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br>*N\u1ebfu kh\u00f4ng c\u00f3 \u0111\u0129a chia s\u1ebb th\u00ec CAMServer ph\u1ee5 l\u00e0 CAMServer ch\u00ednh <code>CAMM\u00e1y ch\u1ee7\/c\u1ea5u h\u00ecnh<\/code> B\u1ed9 nh\u1edb c\u0169ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c chia s\u1ebb b\u1eb1ng c\u00e1ch ch\u1ec9 \u0111\u1ecbnh m\u1ed9t th\u01b0 m\u1ee5c.<\/p>\n\n\n\n<h3 id=\"videoDomains\">cam.videoT\u00ean mi\u1ec1n<\/h3>\n\n\n\n<p>Thi\u1ebft l\u1eadp ph\u00e2n ph\u1ed1i m\u00e1y ch\u1ee7 video. N\u1ebfu b\u1ea1n \u0111\u1ecbnh ngh\u0129a nh\u01b0 sau, khi t\u1ed5ng s\u1ed1 ng\u01b0\u1eddi tham gia trong c\u00e1c ph\u00f2ng theo th\u1ee9 t\u1ef1 \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea v\u01b0\u1ee3t qu\u00e1 50, ph\u00f2ng h\u1ed9i ngh\u1ecb s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o tr\u00ean m\u00e1y ch\u1ee7 ti\u1ebfp theo.<\/p>\n\n\n\n<p><code>cam.videoDomains=camserver1=50;camserver2=50;camserver3=50<\/code><br><\/p>\n\n\n\n<p class=\"is-style-icon_info\">\u30fbC\u00f3 th\u1ec3 b\u1ecf qua n\u1ebfu cam.clusterHosts \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp<br>- Gi\u00e1 tr\u1ecb n\u00e0y kh\u00f4ng ch\u1ec9 ra s\u1ed1 l\u01b0\u1ee3ng k\u1ebft n\u1ed1i t\u1ed1i \u0111a m\u00e0 ch\u1ec9 mang t\u00ednh h\u01b0\u1edbng d\u1eabn \u0111\u1ec3 c\u00e2n b\u1eb1ng t\u1ea3i.<\/p>\n\n\n\n<h4>cam.v\u00f4 hi\u1ec7u h\u00f3aLANNetwork<\/h4>\n\n\n\n<p>K\u1ebft n\u1ed1i TCP\/UDP cho LAN kh\u00f4ng b\u1eaft bu\u1ed9c trong c\u1ea5u h\u00ecnh d\u1ef1 ph\u00f2ng, v\u00ec v\u1eady h\u00e3y t\u1eaft ch\u00fang.<\/p>\n\n\n\n<div class=\"hcb_wrap\" data-no-translation=\"\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cam.disableLANNetwork=true<\/code><\/pre><\/div>\n\n\n\n<h2 id=\"Firewall\">Quy\u1ec1n truy\u1ec1n th\u00f4ng t\u01b0\u1eddng l\u1eeda \u0111\u1ec3 \u0111\u1ed3ng b\u1ed9 h\u00f3a d\u1eef li\u1ec7u gi\u1eefa c\u00e1c m\u00e1y ch\u1ee7<\/h2>\n\n\n\n<ol><li>C\u1eadp nh\u1eadt d\u1eef li\u1ec7u theo th\u1eddi gian th\u1ef1c (tr\u1ea1ng th\u00e1i hi\u1ec7n di\u1ec7n c\u1ee7a ng\u01b0\u1eddi d\u00f9ng, tin nh\u1eafn, ph\u00f2ng tr\u00f2 chuy\u1ec7n, v.v.) \u0111\u01b0\u1ee3c \u0111\u1ed3ng b\u1ed9 h\u00f3a gi\u1eefa c\u00e1c CAMServer, do \u0111\u00f3 c\u1ea7n c\u00f3 quy\u1ec1n li\u00ean l\u1ea1c gi\u1eefa c\u00e1c m\u00e1y ch\u1ee7 b\u1eb1ng t\u01b0\u1eddng l\u1eeda, v.v.<\/li><li>C\u1ed5ng TCP 9090, 9091 v\u00e0 9092 \u0111\u1ec3 truy c\u1eadp v\u00e0o n\u00fat ch\u00ednh DB<\/li><li>C\u1ed5ng TCP 8080 cho URL k\u1ebft n\u1ed1i m\u00e1y ch\u1ee7 v\u1edbi m\u00e1y ch\u1ee7<ul><li>\u0110\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a trong t\u1ec7p ini cam.clusterHosts <\/li><li>V\u00ed d\u1ee5) cam.clusterHosts=camserver1:8080;camserver2:8080;camserver3:8080<\/li><\/ul><\/li><\/ol>\n\n\n\n<h2 id=\"lb-requirements\">Chi ti\u1ebft y\u00eau c\u1ea7u c\u1ee7a Load Balancer<\/h2>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<figure class=\"wp-block-image size-full is-resized is-style-shadow\"><img src=\"https:\/\/chat-messenger.com\/wp-content\/uploads\/2024\/12\/image-9.png\" alt=\"\" class=\"wp-image-11408\" width=\"401\" height=\"291\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<p>Ch\u00fang t\u00f4i s\u1ebd m\u00f4 t\u1ea3 chi ti\u1ebft c\u00e1c y\u00eau c\u1ea7u c\u1ea7n thi\u1ebft cho c\u1ea5u h\u00ecnh C\u00e2n b\u1eb1ng t\u1ea3i.<\/p>\n\n\n\n<p class=\"is-style-icon_info\">L7\/L4 \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3, nh\u01b0ng c\u1ea7n c\u00f3 m\u1ed1i quan h\u1ec7 phi\u00ean. Xin l\u01b0u \u00fd r\u1eb1ng L7 c\u00f3 th\u1ec3 s\u1eeda k\u1ebft n\u1ed1i theo t\u1eebng phi\u00ean, nh\u01b0ng L4 ch\u1ec9 c\u00f3 th\u1ec3 s\u1eeda k\u1ebft n\u1ed1i theo IP. Ph\u1ea7n n\u00e0y gi\u1ea3i th\u00edch c\u00e1ch c\u1ea5u h\u00ecnh L7.<\/p>\n<\/div>\n<\/div>\n\n\n\n<h4>1. Ch\u1ea5m d\u1ee9t SSL<\/h4>\n\n\n\n<ol><li>C\u00e0i \u0111\u1eb7t ch\u1ee9ng ch\u1ec9 SSL tr\u00ean b\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i v\u00e0 th\u1ef1c hi\u1ec7n gi\u1ea3i m\u00e3 SSL\/TLS.<\/li><li>Giao ti\u1ebfp t\u1eeb m\u00e1y kh\u00e1ch \u0111\u01b0\u1ee3c ch\u1ea5p nh\u1eadn b\u1eb1ng HTTPS v\u00e0 HTTP \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng t\u1eeb b\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i \u0111\u1ebfn ch\u01b0\u01a1ng tr\u00ecnh ph\u1ee5 tr\u1ee3.<\/li><\/ol>\n\n\n\n<h4>2. Thu\u1eadt to\u00e1n c\u00e2n b\u1eb1ng t\u1ea3i<\/h4>\n\n\n\n<ol><li>C\u00e2n b\u1eb1ng t\u1ea3i b\u1eb1ng round robin<\/li><li>C\u1ea7n ph\u1ea3i duy tr\u00ec phi\u00ean d\u1ef1a tr\u00ean cookie (m\u1ed1i quan h\u1ec7 phi\u00ean) v\u00e0 c\u1ea7n x\u00e1c nh\u1eadn r\u1eb1ng n\u00f3 c\u00f3 ch\u1ee9c n\u0103ng ph\u00e2n ph\u1ed1i quy\u1ec1n truy c\u1eadp t\u1eeb c\u00f9ng m\u1ed9t M\u00e1y kh\u00e1ch \u0111\u1ebfn c\u00f9ng m\u1ed9t n\u00fat.<\/li><\/ol>\n\n\n\n<h4>3. Ti\u00eau \u0111\u1ec1 v\u00e0 x\u1eed l\u00fd b\u1ed5 sung \u0111\u01b0\u1ee3c chuy\u1ec3n \u0111\u1ebfn m\u00e1y ch\u1ee7 ph\u1ee5 tr\u1ee3 (8080)<\/h4>\n\n\n\n<p><code>X-Chuy\u1ec3n ti\u1ebfp-Proto<\/code><br>M\u1ee5c ti\u00eau \u0111\u1ec1 x\u00e1c \u0111\u1ecbnh y\u00eau c\u1ea7u l\u00e0 https khi LB chuy\u1ec3n ti\u1ebfp n\u00f3 \u0111\u1ebfn m\u00e1y ch\u1ee7 ph\u1ee5 tr\u1ee3<\/p>\n\n\n\n<p><code>X-Chuy\u1ec3n ti\u1ebfp-Cho<\/code><br>M\u1ee5c ti\u00eau \u0111\u1ec1 x\u00e1c \u0111\u1ecbnh \u0111\u1ecba ch\u1ec9 IP c\u1ee7a m\u00e1y kh\u00e1ch khi LB chuy\u1ec3n ti\u1ebfp n\u00f3 \u0111\u1ebfn m\u00e1y ch\u1ee7 ph\u1ee5 tr\u1ee3.<\/p>\n\n\n\n<p><code>X\u1eed l\u00fd ti\u00eau \u0111\u1ec1 N\u00e2ng c\u1ea5p WebSocket<\/code><br>Ph\u00e2n t\u00edch c\u00e1c y\u00eau c\u1ea7u HTTP v\u00e0 ph\u00e1t hi\u1ec7n ti\u00eau \u0111\u1ec1 N\u00e2ng c\u1ea5p, k\u00edch ho\u1ea1t chuy\u1ec3n \u0111\u1ed5i TCP<\/p>\n\n\n\n<p class=\"is-style-icon_info\">B\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i hi\u1ec7n \u0111\u1ea1i (AWS\/GCP\/Azure) c\u00f3 c\u00e0i \u0111\u1eb7t ti\u00eau chu\u1ea9n theo m\u1eb7c \u0111\u1ecbnh.<\/p>\n\n\n\n<h3>4. Giao ti\u1ebfp v\u1edbi m\u00e1y ch\u1ee7 ph\u1ee5 tr\u1ee3<\/h3>\n\n\n\n<p>Giao ti\u1ebfp t\u1eeb b\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i \u0111\u1ebfn m\u1ed7i CAMServer \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n b\u1eb1ng c\u00e1c giao th\u1ee9c v\u00e0 c\u1ed5ng sau.<\/p>\n\n\n\n<ul><li>Giao th\u1ee9c: HTTP<\/li><li>S\u1ed1 c\u1ed5ng: 8080<\/li><li>V\u00ed d\u1ee5 v\u1ec1 k\u1ebft n\u1ed1i: http:\/\/HOSTNAME:8080\/<\/li><\/ul>\n\n\n\n<h3>5. Ki\u1ec3m tra s\u1ee9c kh\u1ecfe<\/h3>\n\n\n\n<ol><li>B\u1ed9 c\u00e2n b\u1eb1ng t\u1ea3i \u0111\u1ecbnh k\u1ef3 y\u00eau c\u1ea7u URL sau v\u00e0 x\u00e1c \u0111\u1ecbnh URL \u0111\u00f3 l\u00e0 &quot;b\u00ecnh th\u01b0\u1eddng&quot; n\u1ebfu \u0111\u00e1p \u1ee9ng c\u00e1c \u0111i\u1ec1u ki\u1ec7n.<\/li><li>URL ki\u1ec3m tra s\u1ee9c kh\u1ecfe: http:\/\/HOSTNAME:8080\/CAMServer\/healthCheck<\/li><li>\u0110i\u1ec1u ki\u1ec7n ki\u1ec3m tra t\u00ecnh tr\u1ea1ng: M\u00e3 tr\u1ea1ng th\u00e1i HTTP: 200 n\u1ed9i dung ph\u1ea3n h\u1ed3i: {\u201cstatus\u201d:200}<\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>V\u1ec1 v\u1ea5n \u0111\u1ec1 d\u1ef1 ph\u00f2ng v\u00e0 c\u00e2n b\u1eb1ng t\u1ea3i, g\u00f3i Ultimate c\u1ee7a CAMServer cho ph\u00e9p b\u1ea1n d\u1ec5 d\u00e0ng [\u2026]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[17],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/6153"}],"collection":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/comments?post=6153"}],"version-history":[{"count":9,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/6153\/revisions"}],"predecessor-version":[{"id":12264,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/6153\/revisions\/12264"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/media?parent=6153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/categories?post=6153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/tags?post=6153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}