应用容器化改造

【背景】最近在信创环境测试虚拟机性能,用一个非常简单的小型应用做测试,架构为典型的前后端分离架构,前端web服务为应用服务器,后端使用mysql数据库。然后对这个应用做容器化改造,以容器方式启动,两种方式的应用分别进行梯度加压,对比文件/容器启动的性能表现及虚机资源利用情况,以及X86和信创虚机表现。

该项工作涉及到:

1、测试应用选型;

2、X86和XC环境分别部署mysql数据库(其中虚机有麒麟、统信、欧拉等多种国产操作系统,网络不能访问国外,个别没有网络访问)和redis缓存;

3、应用传统文件方式部署;

4、容器化改造一个应用并运行;

5、要求两种方式的应用都能应对梯度加压,压测并发1000以上。

整个过程问题很多,掉坑多次。。。应用容器化改造的过程算是比较简单的,简单记录一下。

部署 应用】
因为都没有虚机性能测试的经验,也很难确定应该用什么应用测试,随便找了一个discuz,结果压测工具无法解码验证码;换了一个wordpress,也是常用的论坛软件,但是这里面有api调用国外地址,虚拟机做了网络限制,无法访问国外网络,会一直报错。最后换了一个很简单的phorum:

Phorum | Open Source PHP Forum Software

解压:tar xzf phorum-5.2.23.tar.gz -C /var/www/html

chmod -R 777 /var/www/html

mv /var/www/html/Core-phorum_5_2_23  /var/www/html/phorum

#搭建LAMP环境

yum install -y httpd php php-fpm php-common php-cli php-mbstring php-xml  php-mysqlnd

更改数据库配置:phorum/include/db/config.php.sample配置文件

cp -a config.php.sample config.php

vim config.php

array(    // Database connection 1.        

'name'          =>  'phorum',         

'server'        =>  '192.168.XXX',         

'user'          =>  'phorum5',         

'password'      =>  'phorum5',         

'port'          =>  '3306',         

'socket'        =>  NULL),

打开 http://10.200.XXXXX/Core-phorum_5_2_23/admin.php安装即可

到此是传统的文件部署方式,然后对这个应用做容器化改造:

安装docker 】

cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

wget -O /etc/yum.repos.d/CentOS-Base.repo 

https://repo.huaweicloud.com/repository/conf/CentOS-7-anon.repo

yum clean all

yum makecache

yum update

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install -y docker-ce --nogpgcheck

systemctl start docker

systemctl enable docker

docker --version  (25.0.2)

​​​​​​​【镜像仓库】

在没有网络互通的情况下,不同虚拟机之间传递镜像用一个公网仓库中转,可以换成自己的harbor或者nexus:

docker login -u USER -p PASSWORD swr.cn-north-4.myhuaweicloud.com

docker pull swr.cn-north-4.myhuaweicloud.com/ORG/centosx86withlamp:latest

docker tag phorumarm64:latest swr.cn-north-4.myhuaweicloud.com/ORG/phorumarm64:latest

docker push swr.cn-north-4.myhuaweicloud.com/ORG/phorumarm64:latest

离线包传输:docker save一个镜像成为tar包:docker save -o image.tar image_name:tag

docker load一个tar包镜像docker load -i image.tar

​​​​​​​【Dockerfile 】

vim dockerfile #本机repo源替换容器repo源

FROM daocloud.io/library/centos:7.6.1810

COPY ./CentOS-Base.repo /etc/yum.repos.d/

RUN yum clean all && yum makecache

RUN yum install -y tar httpd php php-fpm php-common php-cli php-mbstring php-xml  php-mysqlnd #基镜像里没有LAMP环境,所以需要另行安装,但最好是先把基镜像改造一下,commit成新的基镜像,打出来的镜像总大小可以减小一半

COPY ./phorum-5.2.23.tar.gz /tmp/

RUN cd /tmp/ && tar xzf phorum-5.2.23.tar.gz -C /var/www/html

RUN cd /var/www/html

RUN mv /var/www/html/Core-phorum_5_2_23  /var/www/html/phorum

ADD config.php /var/www/html/phorum/include/db/config.php #原配置文件写死了数据库配置,将config.php中数据库配置改成环境变量

RUN chmod -R 777 /var/www/html 

ADD httpd-foreground /httpd-foreground

RUN chmod -v +x /httpd-foreground

ENV DB_NAME=phorumdocker

ENV DB_HOST=localhost

ENV DB_USER=root

ENV DB_PASSWORD=

CMD ["/httpd-foreground"]

​​​​​​​【开机脚本】

httpd-foreground为开机启动httpd服务脚本,在docker里面无法直接使用systemctl来启动服务,因此需要使用开机脚本启动httpd服务

vim httpd-foreground

#!/bin/bash

set -e

rm -f /usr/local/apache2/logs/httpd.pid

exec httpd -DFOREGROUND

保存后更改权限

chmod +x httpd-foreground

​​​​​​​【构建镜像】

docker build -t phorum .

​​​​​​​【运行镜像】

docker run --name phorum -d -p 81:80 -e DB_HOST=10.246.XX phorum:latest

访问互联网81端口指向容器80端口。

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值