您的位置:首页 > 运维架构 > Docker

docker+nginx+keepalived环境搭建

2017-03-31 18:12 726 查看

1 背景

 目前docker容器已经很普遍的应用于各大场景,淘宝双十一的所有服务都是通过淘宝定制的Alidocker完成部署,为了做到更好地负载均衡,下面讲解下docker容器下的nginx+keepalived的环境搭建

2 Nginx的主备搭建

2.1 Nginx的安装

Nginx地址:192.168.125.134(主)192.168.125.135(备)

注:以下操作主备都需要操作

 

2.1.1搜索镜像

利用docker容器的官方容器将Nginx镜像拉到本地

# docker
search nginx

 

2.1.2拉取镜像

# docker
pull nginx

 

注:这里可以将nginx的配置文件映射到宿主机以便于后期进行文件修改

创建数据卷(文件夹映射)

# docker
volume create  --name nginx_m_data(主)

创建配置文件进行映射(需要复制已有的配置文件nginx.conf,并新建目录作为后期映射目录)

本人保存目录:/opt/dockerconf/nginx_m(主)

由于nginx非数据库,不会产生重要数据,我们在此利用第二种文件映射

 

2.1.3启动容器

master#
docker run –d –it –v
/opt/dockerconf/nginx/nginx.conf:/etc/nginx/nginx.conf –name
nginx-master –p 80:80 nginx

注:可以增加参数—restart=always 表示当docker服务启动,该容器自动启动

 

2.1.4 查看容器状态

显示状态为up即可

# docker
ps

 

 

 

2.1.5 注意事项

首先注意文件命名问题,最好严格按照主备名称命名 master/slaver

其次是端口映射问题,由于主备nginx不在同一台机器上,端口必须保持一致

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 Nginx 配置

由于我们在启动容器已经将docker容器中的配置文件映射到宿主机,所以修改时不用进入docker容器,只用修改宿主机并重启docker容器即可

 

2.2.1 修改监听端口

一般nginx默认监听端口为80,可以修改为其他非占用端口,但是注意docker容器我们在启动的时候已经将nginx端口默认映射出去,所以如果需要自定义,那么需要docker容器重新启动,并映射自定义端口

 

 

 

 

 

 

 

2.2.2 服务名配置

 

服务名可以配置为自定义的名称,但一般默认为nginx宿主机IP较好

 

 

 

 

 

 

 

2.2.3 权重配置

Upstrem
blance模块就是为了配置权重以及服务地址及端口

此处由于也是采用docker容器的tomcat服务,所以配置IP为tomcat容器的宿主机IP以及对应映射地址

权重参数weight,比例越大,该服务器承受访问次数越多

2.2.4 重启容器

在配置文件成功后,即可重启容器,nginx非容器下,重启在/usr/sbin下执行./nginx –s reload即可

# docker
ps

# docker
restart 863a1c819af8

 

2.2.5 注意事项

首先,在配置文件时,由于我们已经将docker容器中/etc/nginx/nginx.conf映射到宿主机,所以在配置时,只用修改宿主机的配置文件,并重启即可生效

 

其次,新建的nginx容器没有server模块,复制下列server模块放置到http模块中即可

 

server
{

               
listen 80;

           
    server_name
192.168.125.135;

               
location  / {

                       
proxy_pass http://blance;
               
}

       
}

 

       
upstream blance{

               
server 192.168.125.136:8080 weight=5;

               
server 192.168.125.136:8081 weight=5;

       
}

 

最后,由于nginx需要主备两台机器,所以以上操作需要同样在备机上进行操作,注意命名规范即可

 

2.3 Nginx的验证

2.3.1
tomcat容器的配置说明

我们建立nginx默认已经是在以上配置的权重部分IP存在对应的tomcat容器,因此我们可以直接进行验证nginx的配置

Tomcat由于我们将nginx监听端口设置为80 ,则需要将tomcat的端口地址改为80

路径:/usr/lcoal/tomcat/conf/server.xml

 

 

同时为了验证nginx,我们需要在/usr/local/tomcat/webapps/ROOT中新建html,内容为当前容器IP等特有信息

 

2.3.2 Nginx验证

通过浏览器访问nginx的server名称以及映射端口,刷新过程中会随机出现tomcat主备中不同内容,即可判断nginx安装配置成功

 

3 keepAlived的搭建

3.1
keepAlived的依赖

3.1.1 gcc等相关依赖

# yum -y install gcc gcc+ gcc-c++

# yum install popt-devel openssl
openssl-devel libssl-dev libnl-devel popt-devel

3.1.2 安装内核

# yum -y install
kernel kernel-devel

3.2
keepAlived的安装

3.2.1
keepAlived下载、编译

获取安装包

# wget
http://www.keepalived.org/software/keepalived-1.2.2.tar.gz

解压安装包

# tar
-zxvf keepalived-1.2.2.tar.gz 

# cd
keepalived-1.2.2 

gcc编译

# ./configure 

安装编译

#
make 

# make
install  

3.2.2 拷贝相关文件

cp
/usr/local/sbin/keepalived /usr/sbin/

cp /usr/local/etc/rc.d/init.d/keepalived
/etc/init.d/ 

cp /usr/local/etc/sysconfig/keepalived
/etc/sysconfig/ 

cp
-r /usr/local/etc/keepalived/ /etc/  

3.2.3 配置文件修改

 

 

 

---参数说明

1
配置对应的nginx服务所在IP地址以及对应的端口号(此处应该是docker容器映射到宿主机的端口号)

2
主备机标识,主机master
备机 backup;interface 为本机的IP地址,可以通过ifconfig查看,同时一般默认网卡为th0

3 priority为优先级,主机值大于应大于备机

4
virtual_ipaddress VIP地址,即设定的访问地址

5
读取前面编写的nginx IP地址

 

3.3
keepAlived的重启生效

在centos7中所有服务命令通过systemctl start(restart)keepALived.service

 

3.4
keepAlived的验证

3.4.1 VIP验证

KeepALived的配置文件配置完成后,重启即会自动绑定VIP,通过命令:ip a 即可查看

默认网卡(一般为eth0)下的绑定VIP地址

 

KeepAlived的验证也类似于nginx的验证,浏览器中输入VIP地址以及nginx的端口即可

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: