MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

डॉकर पर मारियाडीबी मैक्सस्केल लोड बैलेंसिंग:परिनियोजन:भाग एक

MariaDB MaxScale, MariaDB डेटाबेस सर्वर के लिए एक उन्नत, प्लग-इन डेटाबेस प्रॉक्सी है। यह क्लाइंट एप्लिकेशन और डेटाबेस सर्वर के बीच बैठता है, क्लाइंट क्वेरी और सर्वर प्रतिक्रियाओं को रूट करता है। MaxScale सर्वर की निगरानी भी करता है, इसलिए यह सर्वर की स्थिति या प्रतिकृति टोपोलॉजी में किसी भी बदलाव को तुरंत नोटिस करेगा। यह मैक्सस्केल को फ़ेलओवर और इसी तरह की सुविधाओं को नियंत्रित करने के लिए एक स्वाभाविक विकल्प बनाता है।

इस दो-भाग वाली ब्लॉग श्रृंखला में हम डॉकर पर मारियाडीबी मैक्सस्केल को चलाने के तरीके के बारे में पूरी जानकारी देने जा रहे हैं। यह हिस्सा एक स्टैंडअलोन डॉकटर कंटेनर के रूप में परिनियोजन और उच्च उपलब्धता के लिए डॉकर झुंड के माध्यम से मैक्सस्केल क्लस्टरिंग को कवर करता है।

Docker पर MariaDB MaxScale

डॉकर हब में कई मारियाडीबी डॉकर छवियां उपलब्ध हैं। इस ब्लॉग में, हम मारियाडीबी द्वारा अनुरक्षित और प्रकाशित आधिकारिक छवि का उपयोग करने जा रहे हैं जिसे "मारियाडब/मैक्सस्केल" (टैग:नवीनतम) कहा जाता है। छवि लगभग 71MB आकार की है। इस लेखन के समय, छवि अपने आवश्यक पैकेज के हिस्से के रूप में MaxScale 2.3.4 के साथ पूर्व-स्थापित है।

आम तौर पर, कंटेनर परिवेश पर इस छवि के साथ MaxScale चलाने के लिए निम्न चरणों की आवश्यकता होती है:

  1. एक चल रहा मारियाडीबी (मास्टर-स्लेव या मास्टर-मास्टर) प्रतिकृति/गैलेरा क्लस्टर या एनडीबी क्लस्टर
  2. MaxScale निगरानी के लिए समर्पित एक डेटाबेस उपयोगकर्ता बनाएं और प्रदान करें
  3. MaxScale कॉन्फ़िगरेशन फ़ाइल तैयार करें
  4. कॉन्फ़िगरेशन फ़ाइल को कंटेनर में मैप करें या Kubernetes ConfigMap या Docker Swarm Config में लोड करें
  5. कंटेनर/पॉड/सेवा/प्रतिकृति प्रारंभ करें

ध्यान दें कि मैक्सस्केल मारियाडीबी का एक उत्पाद है, जिसका अर्थ है कि यह मारियाडीबी सर्वर के अनुरूप है। अधिकांश सुविधाएँ अभी भी MySQL के साथ संगत हैं, कुछ भागों को छोड़कर जैसे कि GTID हैंडलिंग, गैलेरा क्लस्टर कॉन्फ़िगरेशन और आंतरिक डेटा फ़ाइलें। हम जिस संस्करण का उपयोग करने जा रहे हैं वह 2.3.4 है, जो बिजनेस सोर्स लाइसेंस (बीएसएल) के तहत जारी किया गया है। यह सभी कोड को खुला रखने की अनुमति देता है और तीन सर्वरों के तहत उपयोग निःशुल्क है। जब उपयोग तीन बैकएंड सर्वरों से अधिक हो जाता है, तो इसका उपयोग करने वाली कंपनी को वाणिज्यिक सदस्यता के लिए भुगतान करना होगा। एक विशिष्ट समयावधि (मैक्सस्केल के मामले में 2 वर्ष) के बाद, रिलीज़ GPL में चली जाती है और सभी उपयोग निःशुल्क होते हैं।

स्पष्ट होने के लिए, चूंकि यह एक परीक्षण वातावरण है, इसलिए हमारे पास 2 से अधिक नोड्स होना ठीक है। जैसा कि MariaDB BSL FAQ पृष्ठ में बताया गया है:

प्र:क्या मैं परीक्षण और विकास के माहौल में बीएसएल के तहत लाइसेंस प्राप्त मारियाडीबी उत्पादों का उपयोग कर सकता हूं?
ए:हां, गैर-उत्पादन परीक्षण और विकास वातावरण में, आप मारियाडीबी से सदस्यता की आवश्यकता के बिना बीएसएल के तहत लाइसेंस प्राप्त उत्पादों का उपयोग कर सकते हैं

इस पूर्वाभ्यास में, हमारे पास पहले से ही एक तीन-नोड मारियाडीबी प्रतिकृति है जिसे क्लस्टरकंट्रोल का उपयोग करके तैनात किया गया है। निम्न आरेख उस सेटअप को दिखाता है जिसे हम परिनियोजित करने जा रहे हैं:

हमारे सिस्टम आर्किटेक्चर में निम्न शामिल हैं:

  • mariadb1 - 192.168.0.91 (मास्टर)
  • mariadb2 - 192.168.0.92 (गुलाम)
  • mariadb3 - 192.168.0.93 (गुलाम)
  • docker1 - 192.168.0.200 (कंटेनरों के लिए डॉकटर होस्ट - मैक्सस्केल, ऐप)

MaxScale उपयोगकर्ता तैयार करना

सबसे पहले, MaxScale के लिए एक MySQL डेटाबेस उपयोगकर्ता बनाएं और नेटवर्क में सभी होस्ट्स को 192.168.0.0/24:

की अनुमति दें।
MariaDB> CREATE USER 'maxscale'@'192.168.0.%' IDENTIFIED BY 'my_s3cret';

फिर, आवश्यक विशेषाधिकार प्रदान करें। यदि आप केवल लोड संतुलन के साथ बैकएंड सर्वर की निगरानी करना चाहते हैं, तो निम्नलिखित अनुदान पर्याप्त होंगे:

MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale'@'192.168.0.%';
MariaDB> GRANT SELECT ON `mysql`.* TO 'maxscale'@'192.168.0.%';

हालाँकि, MaxScale रूटिंग क्वेरीज़ के अलावा और भी बहुत कुछ कर सकता है। इसमें फेलओवर और स्विचओवर करने की क्षमता है, उदाहरण के लिए एक गुलाम को एक नए मास्टर को बढ़ावा देना। इसके लिए सुपर और प्रतिकृति क्लाइंट विशेषाधिकारों की आवश्यकता है। यदि आप इस सुविधा का उपयोग करना चाहते हैं, तो इसके बजाय उपयोगकर्ता को सभी विशेषाधिकार प्रदान करें:

mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]'192.168.0.%';

उपयोगकर्ता भाग के लिए बस इतना ही।

MaxScale कॉन्फ़िगरेशन फ़ाइल तैयार करना

छवि को प्रारंभ होने से पहले कंटेनर में मैप करने के लिए एक कार्यशील कॉन्फ़िगरेशन फ़ाइल की आवश्यकता होती है। कंटेनर में प्रदान की गई न्यूनतम कॉन्फ़िगरेशन फ़ाइल हमें वांछित रिवर्स प्रॉक्सी बनाने में मदद नहीं करेगी। इसलिए, कॉन्फ़िगरेशन फ़ाइल पहले से तैयार की जानी चाहिए।

निम्न सूची हमारी कॉन्फ़िगरेशन फ़ाइल बनाने के लिए आवश्यक मूलभूत जानकारी एकत्र करने में हमारी सहायता कर सकती है:

  • क्लस्टर प्रकार - मैक्सस्केल मारियाडीबी प्रतिकृति (मास्टर-स्लेव, मास्टर-मास्टर), गैलेरा क्लस्टर, अमेज़ॅन ऑरोरा, मारियाडीबी कॉलमस्टोर और एनडीबी क्लस्टर (उर्फ MySQL क्लस्टर) का समर्थन करता है।
  • बैकएंड आईपी पता और/या होस्टनाम - सभी बैकएंड सर्वरों के लिए पहुंच योग्य आईपी पता या होस्टनाम।
  • रूटिंग एल्गोरिथम - मैक्सस्केल दो प्रकार की क्वेरी रूटिंग का समर्थन करता है - राउंड-रॉबिन में रीड-राइट स्प्लिटिंग और लोड बैलेंसिंग।
  • MaxScale द्वारा सुनने के लिए पोर्ट - डिफ़ॉल्ट रूप से, MaxScale राउंड-रॉबिन कनेक्शन के लिए पोर्ट 4006 और रीड-राइट स्प्लिट कनेक्शन के लिए 4008 का उपयोग करता है। आप चाहें तो UNIX सॉकेट का उपयोग कर सकते हैं।

वर्तमान निर्देशिका में, maxscale.cnf नामक एक टेक्स्ट फ़ाइल बनाएं ताकि हम इसे प्रारंभ करते समय कंटेनर में मैप कर सकें। फ़ाइल में निम्न पंक्तियाँ चिपकाएँ:

########################
## Server list
########################

[mariadb1]
type            = server
address         = 192.168.0.91
port            = 3306
protocol        = MariaDBBackend
serv_weight     = 1

[mariadb2]
type            = server
address         = 192.168.0.92
port            = 3306
protocol        = MariaDBBackend
serv_weight     = 1

[mariadb3]
type            = server
address         = 192.168.0.93
port            = 3306
protocol        = MariaDBBackend
serv_weight     = 1

#########################
## MaxScale configuration
#########################

[maxscale]
threads                 = auto
log_augmentation        = 1
ms_timestamp            = 1
syslog                  = 1

#########################
# Monitor for the servers
#########################

[monitor]
type                    = monitor
module                  = mariadbmon
servers                 = mariadb1,mariadb2,mariadb3
user                    = maxscale
password                = my_s3cret
auto_failover           = true
auto_rejoin             = true
enforce_read_only_slaves = 1

#########################
## Service definitions for read/write splitting and read-only services.
#########################

[rw-service]
type            = service
router          = readwritesplit
servers         = mariadb1,mariadb2,mariadb3
user            = maxscale
password        = my_s3cret
max_slave_connections           = 100%
max_sescmd_history              = 1500
causal_reads                    = true
causal_reads_timeout            = 10
transaction_replay              = true
transaction_replay_max_size     = 1Mi
delayed_retry                   = true
master_reconnection             = true
master_failure_mode             = fail_on_write
max_slave_replication_lag       = 3

[rr-service]
type            = service
router          = readconnroute
servers         = mariadb1,mariadb2,mariadb3
router_options  = slave
user            = maxscale
password        = my_s3cret

##########################
## Listener definitions for the service
## Listeners represent the ports the service will listen on.
##########################

[rw-listener]
type            = listener
service         = rw-service
protocol        = MariaDBClient
port            = 4008

[ro-listener]
type            = listener
service         = rr-service
protocol        = MariaDBClient
port            = 4006

प्रत्येक अनुभाग के लिए कुछ स्पष्टीकरण:

  • सर्वर सूची - बैकएंड सर्वर। इस क्लस्टर के प्रत्येक मारियाडीबी सर्वर को उसके अपने छंद में परिभाषित करें। जब हम सेवा परिभाषा को और नीचे निर्दिष्ट करते हैं तो श्लोक नाम का उपयोग किया जाएगा। घटक प्रकार "सर्वर" होना चाहिए।
  • MaxScale कॉन्फ़िगरेशन - वहां सभी MaxScale संबंधित कॉन्फ़िगरेशन को परिभाषित करें।
  • मॉड्यूल की निगरानी करें - MaxScale को बैकएंड सर्वर की निगरानी कैसे करनी चाहिए। घटक प्रकार "मॉनिटर" होना चाहिए और उसके बाद निगरानी मॉड्यूल में से कोई एक होना चाहिए। समर्थित मॉनिटरों की सूची के लिए, MaxScale 2.3 मॉनिटर्स देखें।
  • सेवा - क्वेरी को कहां रूट करें। घटक प्रकार "सेवा" होना चाहिए। समर्थित राउटर की सूची के लिए, MaxScale 2.3 राउटर देखें।
  • श्रोता - मैक्सस्केल को आने वाले कनेक्शनों को कैसे सुनना चाहिए। यह पोर्ट या सॉकेट फ़ाइल हो सकती है। घटक प्रकार "श्रोता" होना चाहिए। आमतौर पर, श्रोता सेवाओं से जुड़े होते हैं।

इसलिए मूल रूप से, हम मैक्सस्केल को दो बंदरगाहों, 4006 और 4008 पर सुनना चाहते हैं। पोर्ट 4006 विशेष रूप से राउंड-रॉबिन कनेक्शन के लिए है, जो हमारे मारियाडीबी प्रतिकृति के लिए केवल-पढ़ने के लिए वर्कलोड के लिए उपयुक्त है, जबकि पोर्ट 4008 विशेष रूप से महत्वपूर्ण पढ़ने और लिखने के वर्कलोड के लिए है। फेलओवर, स्विचओवर या स्लेव के फिर से जुड़ने की स्थिति में हम अपनी प्रतिकृति के लिए कार्रवाई करने के लिए मैक्सस्केल का उपयोग करना चाहते हैं, इस प्रकार हम "मारियाडबमोन" नामक मॉनिटर मॉड्यूल का उपयोग करते हैं।

कंटेनर चलाना

अब हम अपने स्टैंडअलोन मैक्सस्केल कंटेनर को चलाने के लिए तैयार हैं। कॉन्फ़िगरेशन फ़ाइल को -v के साथ मैप करें और दोनों श्रोता पोर्ट 4006 और 4008 प्रकाशित करना सुनिश्चित करें। वैकल्पिक रूप से, आप पोर्ट 8989 पर MaxScale REST API इंटरफ़ेस को सक्षम कर सकते हैं:

$ docker run -d \
--name maxscale \
--restart always \
-p 4006:4006 \
-p 4008:4008 \
-p 8989:8989 \
-v $PWD/maxscale.cnf:/etc/maxscale.cnf \
mariadb/maxscale

इसके साथ सत्यापित करें:

$ docker logs -f maxscale
...
2019-06-14 07:15:41.060   notice : (main): Started REST API on [127.0.0.1]:8989
2019-06-14 07:15:41.060   notice : (main): MaxScale started with 8 worker threads, each with a stack size of 8388608 bytes.

सुनिश्चित करें कि उपरोक्त लॉग को देखते समय आपको कोई त्रुटि नहीं दिखाई दे रही है। सत्यापित करें कि प्रकाशित पोर्ट - 4006, 4008 और 8989 पर डॉकर-प्रॉक्सी प्रक्रियाएं सुन रही हैं:

$ netstat -tulpn | grep docker-proxy
tcp6       0      0 :::8989                 :::*                    LISTEN      4064/docker-proxy
tcp6       0      0 :::4006                 :::*                    LISTEN      4092/docker-proxy
tcp6       0      0 :::4008                 :::*                    LISTEN      4078/docker-proxy

इस समय, हमारा MaxScale चल रहा है और प्रश्नों को संसाधित करने में सक्षम है।

MaxCtrl

MaxCtrl MaxScale के लिए एक कमांड लाइन प्रशासनिक क्लाइंट है जो संचार के लिए MaxScale REST API का उपयोग करता है। यह लीगेसी MaxAdmin कमांड लाइन क्लाइंट के लिए प्रतिस्थापन सॉफ़्टवेयर होने का इरादा है।

MaxCtrl कंसोल में प्रवेश करने के लिए, कंटेनर के अंदर "maxctrl" कमांड निष्पादित करें:

$ docker exec -it maxscale maxctrl
 maxctrl: list servers
┌──────────┬──────────────┬──────┬─────────────┬─────────────────┬─────────────┐
│ Server   │ Address      │ Port │ Connections │ State           │ GTID        │
├──────────┼──────────────┼──────┼─────────────┼─────────────────┼─────────────┤
│ mariadb1 │ 192.168.0.91 │ 3306 │ 0           │ Master, Running │ 0-5001-1012 │
├──────────┼──────────────┼──────┼─────────────┼─────────────────┼─────────────┤
│ mariadb2 │ 192.168.0.92 │ 3306 │ 0           │ Slave, Running  │ 0-5001-1012 │
├──────────┼──────────────┼──────┼─────────────┼─────────────────┼─────────────┤
│ mariadb3 │ 192.168.0.93 │ 3306 │ 0           │ Slave, Running  │ 0-5001-1012 │
└──────────┴──────────────┴──────┴─────────────┴─────────────────┴─────────────┘

यह सत्यापित करने के लिए कि सब कुछ ठीक है, बस निम्नलिखित कमांड चलाएँ:

maxctrl: list servers
maxctrl: list services
maxctrl: list filters
maxctrl: list sessions

प्रत्येक घटक के बारे में अधिक जानकारी प्राप्त करने के लिए, इसके बजाय "शो" कमांड के साथ उपसर्ग करें, उदाहरण के लिए:

maxctrl: show servers
┌──────────────────┬──────────────────────────────────────────┐
│ Server           │ mariadb3                                 │
├──────────────────┼──────────────────────────────────────────┤
│ Address          │ 192.168.0.93                             │
├──────────────────┼──────────────────────────────────────────┤
│ Port             │ 3306                                     │
├──────────────────┼──────────────────────────────────────────┤
│ State            │ Slave, Running                           │
├──────────────────┼──────────────────────────────────────────┤
│ Last Event       │ new_slave                                │
├──────────────────┼──────────────────────────────────────────┤
│ Triggered At     │ Mon, 17 Jun 2019 08:57:59 GMT            │
├──────────────────┼──────────────────────────────────────────┤
│ Services         │ rw-service                               │
│                  │ rr-service                               │
├──────────────────┼──────────────────────────────────────────┤
│ Monitors         │ monitor                                  │
├──────────────────┼──────────────────────────────────────────┤
│ Master ID        │ 5001                                     │
├──────────────────┼──────────────────────────────────────────┤
│ Node ID          │ 5003                                     │
├──────────────────┼──────────────────────────────────────────┤
│ Slave Server IDs │                                          │
├──────────────────┼──────────────────────────────────────────┤
│ Statistics       │ {                                        │
│                  │     "connections": 0,                    │
│                  │     "total_connections": 0,              │
│                  │     "persistent_connections": 0,         │
│                  │     "active_operations": 0,              │
│                  │     "routed_packets": 0,                 │
│                  │     "adaptive_avg_select_time": "0ns"    │
│                  │ }                                        │
├──────────────────┼──────────────────────────────────────────┤
│ Parameters       │ {                                        │
│                  │     "address": "192.168.0.93",           │
│                  │     "protocol": "MariaDBBackend",        │
│                  │     "port": 3306,                        │
│                  │     "extra_port": 0,                     │
│                  │     "authenticator": null,               │
│                  │     "monitoruser": null,                 │
│                  │     "monitorpw": null,                   │
│                  │     "persistpoolmax": 0,                 │
│                  │     "persistmaxtime": 0,                 │
│                  │     "proxy_protocol": false,             │
│                  │     "ssl": "false",                      │
│                  │     "ssl_cert": null,                    │
│                  │     "ssl_key": null,                     │
│                  │     "ssl_ca_cert": null,                 │
│                  │     "ssl_version": "MAX",                │
│                  │     "ssl_cert_verify_depth": 9,          │
│                  │     "ssl_verify_peer_certificate": true, │
│                  │     "disk_space_threshold": null,        │
│                  │     "type": "server",                    │
│                  │     "serv_weight": "1"                   │
│                  │ }                                        │
└──────────────────┴──────────────────────────────────────────┘

डेटाबेस से कनेक्ट करना

एप्लिकेशन के डेटाबेस उपयोगकर्ता को मैक्सस्केल होस्ट के साथ प्रदान किया जाना चाहिए क्योंकि मारियाडीबी सर्वर के दृष्टिकोण से, यह केवल मैक्सस्केल होस्ट को देख सकता है। चित्र में MaxScale के बिना निम्नलिखित उदाहरण पर विचार करें:

  • डेटाबेस का नाम:myapp
  • उपयोगकर्ता:myapp_user
  • होस्ट:192.168.0.133 (एप्लिकेशन सर्वर)

उपयोगकर्ता को मारियाडीबी सर्वर के अंदर डेटाबेस तक पहुंचने की अनुमति देने के लिए, निम्नलिखित कथन को चलाना होगा:

MariaDB> CREATE USER 'myapp_user'@'192.168.0.133' IDENTIFIED BY 'mypassword';
MariaDB> GRANT ALL PRIVILEGES ON myapp.* to 'myapp_user'@'192.168.0.133';

तस्वीर में मैक्सस्केल के साथ, किसी को इसके बजाय निम्नलिखित कथन चलाना होगा (एप्लिकेशन सर्वर आईपी पते को मैक्सस्केल आईपी पते से बदलें, 192.168.0.200):

MariaDB> CREATE USER 'myapp_user'@'192.168.0.200' IDENTIFIED BY 'mypassword';
MariaDB> GRANT ALL PRIVILEGES ON myapp.* to 'myapp_user'@'192.168.0.200';

एप्लिकेशन से, दो पोर्ट हैं जिनका उपयोग आप डेटाबेस से कनेक्ट करने के लिए कर सकते हैं:

  • 4006 - राउंड-रॉबिन श्रोता, केवल-पढ़ने के कार्यभार के लिए उपयुक्त।
  • 4008 - रीड-राइट स्प्लिट श्रोता, राइट वर्कलोड के लिए उपयुक्त।

यदि आपके एप्लिकेशन को केवल एक MySQL पोर्ट (जैसे, Wordpress, Joomla, आदि) निर्दिष्ट करने की अनुमति है, तो इसके बजाय RW पोर्ट 4008 चुनें। क्लस्टर प्रकार की परवाह किए बिना यह सबसे सुरक्षित समापन बिंदु कनेक्ट है। हालाँकि, यदि आपका एप्लिकेशन कई MySQL पोर्ट से कनेक्शन को हैंडल कर सकता है, तो आप राउंड-रॉबिन श्रोता को रीड्स भेज सकते हैं। पढ़ने-लिखने वाले स्प्लिट श्रोता की तुलना में इस श्रोता के पास कम ओवरहेड और बहुत तेज़ है।

हमारे MariaDB प्रतिकृति सेटअप के लिए, डेटाबेस होस्ट/पोर्ट संयोजन के रूप में इनमें से किसी एक समापन बिंदु से कनेक्ट करें:

  • 192.168.0.200 पोर्ट 4008 - मैक्सस्केल - केवल पढ़ने/लिखने या लिखने के लिए
  • 192.168.0.200 पोर्ट 4006 - मैक्सस्केल - केवल पढ़ने के लिए संतुलित
  • 192.168.0.91 पोर्ट 3306 - मारियाडीबी सर्वर (मास्टर) - पढ़ें/लिखें
  • 192.168.0.92 पोर्ट 3306 - मारियाडीबी सर्वर (दास) - केवल पढ़ने के लिए
  • 192.168.0.93 पोर्ट 3306 - मारियाडीबी सर्वर (दास) - केवल पढ़ने के लिए

गैलेरा क्लस्टर और एनडीबी क्लस्टर जैसे मल्टी-मास्टर क्लस्टर प्रकार के लिए नोट, पोर्ट 4006 को इसके बजाय मल्टी-राइट बैलेंस्ड कनेक्शन के रूप में उपयोग किया जा सकता है। MaxScale के साथ आपके पास डेटाबेस से कनेक्ट करते समय चुनने के लिए कई विकल्प हैं, जिनमें से प्रत्येक अपने फायदे का सेट प्रदान करता है।

डॉकर झुंड के साथ मैक्सस्केल क्लस्टरिंग

डॉकर झुंड के साथ, हम झुंड सेवा के माध्यम से मैक्सस्केल इंस्टेंस का एक समूह बना सकते हैं, जिसमें एक से अधिक प्रतिकृतियां स्वार्म कॉन्फिग के साथ मिल सकती हैं। सबसे पहले, कॉन्फ़िगरेशन फ़ाइल को झुंड में आयात करें:

$ cat maxscale.conf | docker config create maxscale_config -

इसके साथ सत्यापित करें:

$ docker config inspect --pretty maxscale_config

फिर, MaxScale डेटाबेस उपयोगकर्ता को नेटवर्क में किसी भी झुंड होस्ट से कनेक्ट करने की अनुमति दें:

MariaDB> CREATE USER 'maxscale'@'192.168.0.%' IDENTIFIED BY 'my_s3cret';
MariaDB> GRANT ALL PRIVILEGES ON *.* TO [email protected]'192.168.0.%';

MaxScale के लिए झुंड सेवा शुरू करते समय, हम नीचे दी गई एक ही कॉन्फ़िगरेशन फ़ाइल में कई कंटेनर (प्रतिकृति कहलाते हैं) मैपिंग बना सकते हैं:

$ docker service create \
--name maxscale-cluster  \
--replicas=3 \
--publish published=4008,target=4008 \
--publish published=4006,target=4006 \
--config source=maxscale_config,target=/etc/maxscale.cnf \
mariadb/maxscale

उपरोक्त तीन मैक्सस्केल कंटेनर बनाएगा जो झुंड नोड्स में फैले हुए हैं। इसके साथ सत्यापित करें:

$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                     PORTS
yj6u2xcdj7lo        maxscale-cluster    replicated          3/3                 mariadb/maxscale:latest   *:4006->4006/tcp, *:4008->4008/tcp

यदि एप्लिकेशन झुंड नेटवर्क के भीतर चल रहे हैं, तो आप बस अपने अनुप्रयोगों के लिए डेटाबेस होस्ट के रूप में सेवा नाम "मैक्सस्केल-क्लस्टर" का उपयोग कर सकते हैं। बाहरी रूप से, आप प्रकाशित बंदरगाहों पर किसी भी डॉकर होस्ट से जुड़ सकते हैं और झुंड नेटवर्क राउंड-रॉबिन फैशन में सही कंटेनरों के कनेक्शन को रूट और संतुलित करेगा। इस बिंदु पर हमारी वास्तुकला को नीचे दिखाया जा सकता है:

दूसरे भाग में, हम डॉकटर पर मैक्सस्केल के उन्नत उपयोग के मामलों जैसे सेवा नियंत्रण, कॉन्फ़िगरेशन प्रबंधन, क्वेरी प्रसंस्करण, सुरक्षा और क्लस्टर सामंजस्य को देखने जा रहे हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक उत्तरदायी भूमिका का उपयोग करके MySQL परिनियोजन का परिचय

  2. कैसे जोड़ें () मारियाडीबी में काम करता है

  3. मारियाडीबी में एक तालिका के चरित्र सेट और संयोजन को सेट करें

  4. मारियाडीबी में कास्ट () कैसे काम करता है

  5. MySQL या MariaDB के लिए Oracle RAC HA सॉल्यूशन की गैलेरा क्लस्टर से तुलना करना