[docker]docker啟動一個小叢集--link
阿新 • • 發佈:2018-12-25
1,docker實現以下架構---所有container在同一臺機器
2,下載映象
docker pull ubuntu
docker pull django
docker pull haproxy
docker pull redis
3,啟動映象
每個映象給個bash
由於需要--link來互聯容器 建立順序: redis-master--->redis-slave--->app--->haproxy docker run -it --name redis-master redis bash docker run -it --name redis-slave1 --link redis-master:master redis /bin/bash docker run -it --name redis-slave2 --link redis-master:master redis /bin/bash docker run -it --name APP1 --link redis-master:db -v ~/Projects/Django/App1:/usr/src/app django /bin/bash docker run -it --name APP2 --link redis-master:db -v ~/Projects/Django/App2:/usr/src/app django bash docker run -it --name HAProxy --link APP1:APP1 --link APP2:APP2 -p 6301:6301 -v ~/Projects/HAProxy:/tmp haproxy /bin/bash
4,配置redis
配置redis主-原始配置檔案自己新安裝一臺匯出
bind 0.0.0.0
daemonize yes
pidfile /var/run/redis_6379.pid
配置redis從
bind 0.0.0.0
daemonize yes
pidfile /var/run/redis_6379.pid
slaveof master 6379
測試:主庫
redis-cli
set master xxx
client: redis-cli ; get master
5,配置app-基於django
6,配置haproxycd /usr/src/app/dockerweb django-admin.py startproject redisweb ./manage.py startapp helloworld 修改views. from django.shortcuts import render from django.http improt HttpResponse # Create your views here. import redis def Hello(request): str=redis.__file__ str+="<br>" r=redis.Redis(host='db',port=6379,db=0) info=r.info() str+=("Set Hi <br>") r.set("Hi","HelloWorld-APP1") str+=("Get Hi: %s <br>"%r.get("Hi")) str+="Redis Info: <br>" str+=("key: Info Value") for key in info: str+=("%s:%s<br>"%(key,info[key])) return HttpResponse(str) 修改url from helloworld.views import Hello urlpatterns = [ url(r'^helloworld$', Hello), url(r'^admin/', admin.site.urls), ] 同步資料庫: ./manage.py makemigrations ./manage.py migrate python manage.py runserver 0.0.0.0:8001 APP1 APP2一樣
7,訪問測試cd /usr/local/sbin cat > haproxy.cfg global log 127.0.0.1 local2 chroot /usr/local/sbin maxconn 4000 daemon nbproc 4 pidfile /usr/local/sbin/haproxy.pid defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 balance roundrobin frontend redis_proxy bind *:6301 mode http stats enable stats uri /haproxy-stats default_backend app backend app balance roundrobin server APP1 APP1:8001 check inter 2000 rise 2 fall 5 server APP2 APP2:8001 check inter 2000 rise 2 fall 5