docker容器的實踐——綜合項目一


                                  Docker 綜合實驗

 

實驗拓撲:

 

【調度器】

Keepalived + nginx

.Keepalived服務的安裝配置:

關閉LVS服務器的ipv4代理和轉換的功能。

vim  /etc/sysctl.conf

修改

net.ipv4.ip_forward = 1

添加:

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

sysctl -p                 //刷新內核文件

4.安裝Keepalived的依賴關系

yum  -y  install  kernel-devel  openssl-devel  popt-devel

5.從y2c里解壓keepalived軟件,進行編譯,編譯會自動生成一個服務文件,只要將服務加入系統服務里,並開啟即可。

cd  /root

tar  zxf  keepalived-1.2.13.tar.gz  -C  /usr/src

cd  /usr/src/keepalived-1.2.13/

./configure

 --prefix=/  --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/

&&  make  &&  make install

chkconfig  --add keepalived

chkconfig  keepalived  on

6.配置文件模板的備份,防止改壞。

cd  /etc/keepalived/

cp  keepalived.conf  keepalived.conf.bak

7.編輯keepalived 工具的配置文件進行以下修改。

 並且重啟服務。

vim  /etc/keepalived/keepalived.conf

global_defs {

 

   router_id LVS_DEVEL_r1

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

       192.168.6.254

    }

notify_master "/etc/init.d/nginx start"

notify_backup "/etc/init.d/nginx stop"

notify_fault "/etc/init.d/nginx stop"

}

 

備注:備份keepalived的配置基本相同,需要修改的地方是:

router_id LVS_DEVEL_r2

    state BACKUP

    priority 50

 

啟動服務:

service  keepalived start

 

.nginx服務安裝配置

yum -y install pcre-devel zlib-devel

 

useradd  -M  -s  /sbin/nologin nginx

 

cd /root

 

tar  zxf  nginx-1.6.0.tar.gz  -C /usr/src

 

cd  /usr/src/nginx-1.6.0/

 

./configure --prefix=/usr/local/nginx --user=nginx  --group=nginx  --with-http_stub_status_module

make  &&  make install

 

ln  -s  /usr/local/nginx/sbin/*  /etc/init.d/nginx

編輯配置文件

vim /usr/local/nginx/conf/nginx.conf

去掉注釋:

user nobody;

error_log  logs/error.log;

error_log  logs/error.log  notice;

error_log  logs/error.log  info;

pid logs/nginx.pid;

添加:

33     #gzip  on;

 34     upstream nginx_server {

 35         server 192.168.6.110:32777 weight=1;

 36         server 192.168.6.110:32773 weight=1;

 37         }

 

46         location / {

 47             root   html;

 48             index  index.html index.htm;

 49             proxy_pass http://nginx_server;

 50         }

注:前邊的數字是行數

 

啟動nginx服務:

nginx

重載nginx服務

killall  -s  HUP  nginx

監聽nginx端口,看到監聽的nginx為80即可。

netstat -anpt | grep nginx

 

 

 

nfs

注意:先做nfs,然后將docker host 要映射到容器的目錄/www進行掛載,然后在做dockerweb容器,這樣的話就可以從nfs映射到容器里了,否則nfs只能映射到docker host ,映射不到容器:

創建共享目錄,設置權限,然后啟動nfs服務

mkdir /www

chown -R nginx.nginx /www

vim /etc/exports

添加:

/www 192.168.6.0/24 (rw,no_root_squash,sync)

 

systemctl restart rpcbind

systemctl restart nfs

 

然后將docker 主機上的卷容器掛載到nfs服務器上

mount  -t  nfs  192.168.6.113:/www   /www/

 

web集群的配置】

Docker 主機的配置

1.清空放火牆,關閉沙盒

Iptables  -F

setenforce 0

2.開啟ipv4轉發

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p

 

3.創建docker的bridge網絡,需要注意的是不能和本機是一個網段,回形成地址沖突。

docker network create --driver bridge --subnet 192.168.102.0/24 --gateway 192.168.102.1 my_net

查看自定義網絡:

docker network ls

4.測試這個時候docker host是否可以連接外網

ping www.baidu.com

5.解壓nginx和php的tar包

docker images

tar load -i php.tar

docker load -i php.tar

docker images

6.創建物理的映射目錄,用來同步nginx的首頁數據,並創建nginx用戶,用來給物理目錄設置權限,讓nginx認為所有的目錄都是自己的本地目錄,方便數據同步。

mkdir /www

useradd nginx

chown -R nginx.nginx /www

7.創建卷容器,講物理目錄映射到nginx和php容器里,用來同步數據。

docker create --name vc_data -v /www/:/www/ busybox

8.創建php容器,並進行配置。

docker run -itd --name php-y -p 9000 -p 80 --network my_net  --volumes-from vc_data 985e8dfa17da

docker ps

docker exec -it php-y /bin/bash

進入容器后的配置:

(1)查看IP地址,是否是自定義的網段IP地址,然后測試是否可以ping通外網驗證網絡是否暢通。

ifconfig

192.168.102.2

(2)由於其他的配置在做php的tar包的時候已經做了,所以現在可以直接修該配置文件了。

vim /usr/local/php/etc/php-fpm.conf

修改:

user = nginx                                               

group = nginx 

listen = 192.168.102.2:9000

(3)優化啟動服務的命令。

cp /usr/src/php-5.3.28/sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm

chmod  +x  /etc/init.d/php-fpm

chkconfig  php-fpm  on

(4)創建nginx用戶,因為指定了php-fpm文件啟動使用的用戶,所以要創建。

useradd nginx

(5)啟動php-fpm服務,並查看端口監聽是否為9000

/etc/init.d/php-fpm start

netstat -anpt | grep php-fpm

 

 

9.創建nginx容器,並進行配置。

docker run -itd --name web1 -p 80 -p 9000 --network my_net  --volumes-from vc_data 2ae963791a66

docker run -itd --name web2 -p 80 -p 9000 --network my_net  --volumes-from vc_data 2ae963791a66

   86  docker run -itd --name web3 -p 80 -p 9000 --network my_net  --volumes-from vc_data 2ae963791a66

docker exec -it web1 /bin/bash

注意:三台nginx配置相同

(1)給映射進來的/www的目錄設置權限,

chown -R nginx.nginx /www

(2)安裝查看ip和編輯文本的工具

yum -y install vim net-tools

(3)編輯nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

修改:

去掉注釋:

user  nobody;

error_log  logs/error.log;

pid        logs/nginx.pid;

修改:

43         location / {

44             root   /www;   ——nginx的物理目錄

45             index  index.php index.html index.htm;

                               ——php的首頁文件

72         location ~ \.php$ {

 73             root           /www;  

——nginx服務的根目錄

 74             fastcgi_pass   192.168.102.2:9000;

                                 ——監聽php容器的ip+端口

 75             fastcgi_index  index.php;

 76             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

 77             include        fastcgi.conf;

 78         }

 

(4)安裝nginx服務啟動的工具psmisc

yum -y install psmisc

(5)重載nginx服務,要是重啟的話則直接退出容器並且關閉了容器。

killall -s HUP nginx

netstat -anpt | grep ngixn

 

10.驗證nginx是否可以連接php-fpm

在docker  host 的共享目錄/www創建php的默認頁面,然后可以到nginx和php的容器里查看,是否將目錄映射到了里邊,需要注意的是在這兩個容器里,/www目錄的權限並不是nginx,而是docker主機的nginx的id號,但是不影響。

cd  /www

vim   index.php

<?php

phpinfo();

?>

 

11.驗證是否連接成功

通過docker ps 查看映射nginx容器的docker host的隨機端口,然后訪問docker host的IP地址加nginx的80映射出來的隨機端口可以訪問nginx是否連接到了php容器。

firefox 192.168.6.110:32773

 

 

  

創建完成的鏡像和容器:

 

 

 

 

【數據庫】

setenforce 0

iptables -F

systemctl stop firewall

yum -y remove mariiadb-server mariadb

yum -y remove mariadb-server mariadb

rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

yum -y install mysql-community-server

systemctl start mysqld

mysqladmin -u root password 123.com

mysql -u root -p123.com

create database luntan;

grant all on luntan.* to 'root'@'%' identified by '123.com';

flush privileges;

 

ifconfig

驗證:在php的容器上進行數據庫的連接測試,然后就可以安裝論壇

mysql -u root -h 192.168.6.113 -p123.com

 

客戶端:通過訪問keepalivedVIP地址,然后就可以安裝論壇了

Firefox  192.168.6.254

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM