(Tad)
•
•
•
•
•
•
•
Why Docker?
•
• GlusterFS, Ceph FS / RDB
•
•
• …
Benefits From Docker
• Deployment
• Update
• Universal Method among various OS
Why Use Docker
Deployment
Normal Deployment
• Uniq Method For various DB
• Dependance Problem
• OS Support (CoreOS, CentOS, Debian, etc.)
• Standard Tuning Method
• Ansible, Fleet
• Server Resource Pool
• Deployment Template (Systemd-unit-file)
How
• etcd
• zookeeper
• mongodb
• elastic search
• mysql
• hadoop
• ceph
• glusterFS
• kafka
• nsq
Support DB
ExampleDescription=mongo-bds-uba-rs After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 Restart=always ExecStartPre=-/usr/bin/docker rm mongo-bds-uba-rs ExecStart=/usr/bin/docker run \\ --name mongo-bds-uba-rs \\ -p 1301:27017 \\ -v /hdd1/bds-uba-rs:/data/db \\ dhub.yunpro.cn/library/mongo:3 \\ --storageEngine wiredTiger \\ --replSet bds-uba-rs
ExecStop=/usr/bin/docker kill mongo-bds-uba-rs [Install] WantedBy=multi-user.target
Upgrade
Normal Upgrade
• Rollback Solution
• Dependance Confliction
•
• Complicated Documents
But• Small Version
• usually can upgrade directly
• Big Version
• re-import in required OR making compatible scripts to upgrade
• like: ceph, mongo engine switch
ExampleDescription=mongo-bds-uba-rs After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 Restart=always ExecStartPre=-/usr/bin/docker rm mongo-bds-uba-rs ExecStart=/usr/bin/docker run \\ --name mongo-bds-uba-rs \\ -p 1301:27017 \\ -v /hdd1/bds-uba-rs:/data/db \\ PRIVATE-REGISTRY/library/mongo:3.2 \\ --storageEngine wiredTiger \\ --replSet bds-uba-rs
ExecStop=/usr/bin/docker kill mongo-bds-uba-rs [Install] WantedBy=multi-user.target
Scaling
Example[Unit] Description=mongo-shard After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 Restart=always ExecStartPre=-/usr/bin/docker rm mongo-shard ExecStart=/usr/bin/docker run \
--name mongo-shard \ -p 1201:27018 \ -v /data/shard:/data/db \ PRIVATE-REGISTRY/library/mongo:3 \ --storageEngine wiredTiger \ --shardsvr
ExecStop=-/usr/bin/docker kill mongo-shard [Install] WantedBy=multi-user.target
Support DB• Redis Cluster
• Mongo Shard
• ElasticSearch
• Hadoop
• NSQ
• Kafka
Auto Failover backup
Support DB• etcd failover
• zookeeper failover
• mongoDB replication
• redis master-slave
• mysql master-slave
Example
• Mongo Replication HDD broken
• Select Available Server From Servers Pool
• Start Replication Docker Instance
• Mongo Client Remove Old One and Add New One
Auto Balance
Example
• Mongos
• Using DNS to Round-Robin
• Increase Mongos to handle more connections and traffic
Benchmark
Why Docker
• Easy To deploy in temporary servers
• More Connections
• More Operations to generate
• Build Once and run anywhere
Benchmark
• More Connections and operations to DB
Problems
Problems• MongoDB no Master
• MongoDB Connections Over 20,000
• MongoDB Tuning
• Ceph RDB Volume Support Problem