三、Redis配置
1、redis-master配置并启动
1)修改redis-master配置文件
docker inspect redi-master
#找到如下样式的数据
“Mounts”: [
{
“Name”: “05d9136c164d80670528fcf054dfd6579daa7142c35d770693913f08e3b65356”,
“Source”: “/var/lib/docker/volumes/05d9136c164d80670528fcf054dfd6579daa7142c35d770693913f08e3b65356/_data”,
“Destination”: “/data”,
“Driver”: “local”,
“Mode”: “”,
“RW”: true,
“Propagation”: “”
}
],
可知道host机和容器之间的共享目录对应关系,即可通过在host机上编辑文件。
通过本地安装redis,找到默认的redis配置文件,
cp REDIS_HOME/redis.conf /var/lib/docker/volumes/05d9136c164d80670528fcf054dfd6579daa7142c35d770693913f08e3b65356
cd /var/lib/docker/volumes/05d9136c164d80670528fcf054dfd6579daa7142c35d770693913f08e3b65356
vi redis.conf
daemonnize yes
pidfile /var/run/redis.pid
2)启动redis-master
docker attach redis-master
cp /data/redis.conf /usr/local/bin
/usr/local/bin/redis-server redis.conf
2、redis-slave1配置并启动
1)修改redis-slave配置文件
docker inspect redi-master
#找到如下样式的数据
“Mounts”: [
{
“Name”: “0fe23ead8cc28a4339be007a3fea9629c948ffe46199a96f4cd31599adf13861”,
“Source”: “/var/lib/docker/volumes/0fe23ead8cc28a4339be007a3fea9629c948ffe46199a96f4cd31599adf13861/_data”,
“Destination”: “/data”,
“Driver”: “local”,
“Mode”: “”,
“RW”: true,
“Propagation”: “”
}
],
cp REDIS_HOME/redis.conf /var/lib/docker/volumes/0fe23ead8cc28a4339be007a3fea9629c948ffe46199a96f4cd31599adf13861
cd /var/lib/docker/volumes/0fe23ead8cc28a4339be007a3fea9629c948ffe46199a96f4cd31599adf13861
vi redis.conf
daemonnize yes
pidfile /var/run/redis.pid
slaveof master 6379
2)启动redis-slave1
docker attach redis-slave1
cp /data/redis.conf /usr/local/bin
/usr/local/bin/redis-server redis.conf
3、redis-slave2配置并启动(此步骤同上)
4、测试redis集群
docker attach redis-master
redis-cli
127.0.0.1:6379>set master 'test"
OK
127.0.0.1:6379>get master
“test”
Ctl+p+q
docker attach redis-slave1
redis-cli
127.0.0.1:6379>get master
“test”
可以取到“test”,说明redis集群搭建成功。
四、App配置(以下只以APP1为例,APP2步骤同样,只是名称和端口要对应修改)
1、环境准备
docker attach APP1
pip install redis
#验证
python
import redis
没有报错,则说明redis安装成功。
2、创建工程
在容器内执行:
mkfir -p /usr/src/app/dockerweb
cd /usr/src/app/dockerweb
django-admin.py startproject redisweb
cd redisweb
python manage.py start app helloworld
3、代码编辑
退出容器,在host上执行文件编辑:
cd ~/Project/Django/App1/dockerweb/redisweb/helloworld/
vi view.py
import redis
def hello(request):
str=redis.__file__
str+=“
”
r=redis.Redis(host=‘db’,port=6379,db=0)
info=r.info()
str+=(“Set Hi
”)
r.set(‘Hi’,‘HelloWorld-APP1’)
str+=(“Get Hi: %s
” % r.get(‘Hi’))
str+=(“Redis Info:
”)
str+=(“Key: Info Value”)
for key in info:
str+=(“%s: %s
” % (key,info[key]))
return HttpResponse(str)
cd …/redisweb/
vi setting.py
在INSTALLED_APP里面的最后一行加入:
‘helloworld’,
另外,修改ALLOWED_HOSTS如下,否则外部访问不了:
ALLOWED_HOSTS = [‘*’]
vi urls.py
“”"redisweb URL Configuration
The urlpatterns
list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r’^KaTeX parse error: Expected group after '^' at position 153: …tterns: url(r'^̲‘, Home.as_view(), name=‘home’)
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r’^blog/‘, include(‘blog.urls’))
“”"
from django.conf.urls import url
from django.contrib import admin
from helloworld.views import hello
urlpatterns = [
url(r’^admin/‘, admin.site.urls),
url(r’^helloworld$',hello),
]
4、数据库同步
docker attach APP1
cd /usr/src/app/dockerweb/redisweb
python manage.py makeigrations
python manage.py migrate
如果是旧版本的django,上面那句命令可用
python manage.py syncdb
代替。
5、服务启动
python manage.py runserver 0.0.0.0:8001
五、HAProxy负载均衡配置
1、haproxy配置文件编写
cd ~/Project/HAProxy
vi haproxy.cfg
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/sbin
daemon
nbproc 4
pidfile /usr/local/sbin/haproxy.pid
defaults
log 127.0.0.1 local3
mode http
option dontlognull
option redispatch
retries 2
maxconn 2000
balance roundrobin
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen redis_proxy
bind 0.0.0.0:6301
stats enable
stats uri /haproxy-stats
server APP1 APP1:8001 check inter 2000 rise 2 fall 5
server APP2 APP2:8002 check inter 2000 rise 2 fall 5
2、启动haproxy
docker attach HAProxy
cd /tmp
cp haproxy.cfg /usr/local/sbin/
/usr/local/sbin/haproxy -f haproxy.cfg
六、应用栈访问测试