从实战角度超级详解中大型企业微服务化的六大核心关键技术
在之前文章:超全详解Java开发环境搭建 一文中,部分博友提出程序的自动化部署等相关问题,本篇文章就来解决该问题,即企业微服务化,如何实现服务的自动化部署?服务自动化部署需要哪些技术?
本篇文章从实战角度讲解中大型公司微服务化最核心最关键的六大技术,即jenkins,docker,maven,git,gitlab,harbor(本篇文章未讲解nexus,在后续文章再讲解),关于六大技术,会在接下来的文章中从架构,理论,实战,常见难点和常见误区等角度精细化讲解。
Tip:本篇文章适合具有一定linux和docker基础的读者,对于不熟悉linux和docker的读者朋友,可以先关注,后续文章会对每个专题从入门到架构进行讲解。
一 docker安装
1.卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.安装相关工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3.选择稳定仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
注意:这里可以选择阿里云镜像或网易云镜像等,也可选择自己公司搭建的harbor镜像仓库
4.下载最新版docker
yum install docker-ce docker-ce-cli containerd.io
注意:如果安装具体版本,请使用命令:yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
5.启动docker
systemctl start docker
6.加入开机启动
system enable docker
7.查看是否安装成功
docker info
如下表示安装成功
*************************特别说明***********************************
关于彻底卸载docker:
(1)查询docker安装过的包
yum list installed | grep docker
(2)安装安装包
yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y
(3)删除容器镜像
rm -rf /var/lib/docker
rm -rf /var/run/docker
rm -rf /etc/systemd/system/docker.service.d
(4)卸载docker相关组件
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
关于centos 官网参考:
https://docs.docker.com/install/linux/docker-ce/centos/
***********************************************************************
二 docker安装gitlab
1.docker查找gitlab
docker search gitlab
2.拉取gialab镜像
我们选择镜像名称为gitlab/gitlab-ce的镜像来安装
docker pull gitlab/gitlab-ce
3.查看本地拉取的gitlab镜像
4.启动镜像
docker run -itd -p 9980:80 -p 9943:443 -p 9922:22 --name gitlab gitlab/gitlab-ce:latest
启动容器,建议采用如下方式:
docker run \
--detach \
--publish 9943:443 \
--publish 9980:80 \
--name gitlab \
--restart=always \
-v /mnt/gitlab/etc:/etc/gitlab \
-v /mnt/gitlab/log:/var/log/gitlab \
-v /mnt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
注意:端口号:9980,9943,9922可以任意选择,但是80,443,22是gitalab镜像固定的,不要改变。
5.将端口号加入防火墙
注意:需要将映射的端口号9980,9943,9922加入防火墙,如果不加入防火墙,虽然能成功启动gitlab镜像,但浏览器访问不了
(1)将9980,9943,9922端口号加入防火墙
firewall-cmd --permanent --add-port=9980/tcp
firewall-cmd --permanent --add-port=9943/tcp
firewall-cmd --permanent --add-port=9922/tcp
(2)重启防火墙
systemctl reload firewalld
(3)查看防火墙允许端口
firewall-cmd --list-ports
6.设置开机启动容器
docker update --restart=always 容器名称
7.查看容器状态
docker ps
如下表示启动容器成功
8.访问gitlab
访问方式:ip:9980
这里的9980端口就是启动gitlab容器时设置的端口
首次访问时,需要设置密码(这里设置为12346),默认账户为root
用刚才设置的密码登录
账号/密码:root/123456
三 harbor
(一)安装docker-compose
关于docker-compose安装,分为在线安装和离线安装。
在线安装,请参照官网:https://docs.docker.com/compose/install/#install-compose
由于大部分公司运用程序部署在内网,因此主要讲解内网安装
1.下载docker-compose离线安装包
github提供下载地址:https://github.com/docker/compose/releases
2.将下载的安装包上传到linux
我上传到/usr/harbor_1.10.1 目录下
3.将docker-compose-Linux-x86_64.64移动到/usr/local/bin,并重命名为docker-compose
mv docker-compose-Linux-x86_64.64 /usr/local/bin/docker-compose
4.赋权限
chmod +x /usr/local/bin/docker-compose
5.查看是否安装成功
docker-compose -v
如下表示docker-compose安装成功
(二)安装python 2.7+
由于大部分电脑都自带了python2,所以这里就不讲解安装python了。
(三)harbor安装
3.访问
访问时,只需输入ip或域名即可,默认端口号为80
账号/密码:admin/Alan_beijing
登录成功后主界面如下:
*****************************************************************************
其他一下相关操作提示
******************************************************************************
1.数据存储路径
在默认安装情况下,harbor存储路径是/data/
https://blog.csdn.net/BalaBalaYi/article/details/83338416
2.登录harbor服务器
假若A(10.3.212.21)为harbor服务器,B服务器要操作harbor服务器镜像,需要做如下操作:
(1)配置B服务器
vim /etc/docker/daemon.json
否则,会出现:
(2)配置完后,重启docker
systemctl restart docker
四 部署jenkins
(一)安装maven
1.下载maven
wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
2.将maven包移动到/usr,并解压
mv ./apache-maven-3.6.1-bin.tar.gz /usr/apache-maven-3.6.1-bin.tar.gz
tar -zxvf apache-maven-3.6.1-bin.tar.gz
3.配置maven环境变量
vim /etc/profile
#配置maven
export MAVEN_HOME=/usr/apache-maven-3.6.1
export PATH=$MAVEN_HOME/bin:$PATH
4.source profile文件
source /etc/profile
5.查看maven是否配置成功
mvn -v,如果出现如下,就表示成功
(二)GIT安装
git安装有两种方式,yum方式和通过git源码安装方式,本次讲解通过git源安装
1.卸载旧版本git
yum remove git
2.下载git gz包
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
Tip:
如果要下载其他版本,请去官网获取不同源url,官网源url
https://mirrors.edge.kernel.org/pub/software/scm/git/
3.解压
tar -zxvf git-2.9.5.tar.gz
4.安装相关依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc xmlto docbook2x autoconf
yum install gcc perl-ExtUtils-MakeMaker
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
注意:这一步可以先跳过,等后面安装出现问题时,再具体安装也可(推荐)
5.进入解压文件
cd /path/git-2.9.5
6.编译git源码
make prefix=/usr/local/git all
7.安装git到/usr/local/git
make prefix=/usr/local/git install
8.配置变量
vim /etc/profile
GIT_HOME=/usr/git-2.9.5
PATH=$GIT_HOME/bin:$PATH
export GIT_HOME PAHT
8.刷新配置文件
source /etc/profile
9.查看安装是否成功
git --version
(三)jenkins安装
关于jenkins安装,有两种安装方式,即基于linux的tomcat安装和基于docker安装,由于jenkins是管理核心数据的建议采用基于tomcat方式安装,
(一)基于linux的tomcat方式安装
这种方式就是传统tomcat部署方式,即将jenkins.war放在tomcat中即可,在后续专题讲解jenkins中讲解,这里不讲解。
(二)基于docker安装
1.docker查找jenkins镜像
2.拉取镜像
docker pull jenkins
3.创建目录
这个目录可以随意指定,我这里创建为: mkdir /usr/jenkins
4.为刚才创建的目录赋予权限
chmod 777 /usr/jenkins/
5.启动镜像
需要注意的是:需要先将映射的端开启防火墙允许,如下映射的端口9090和5000需要让防火墙允许。
docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true -v /usr/jenkins:/var/jenkins_home jenkins:latest
6.访问
访问方式:ip:9090或域名访问
注意:这里的9090端口为如上映射的端号
7.初始密码
初始密码在/var/jenkins_home/secrets/initialAdminPassword,操作步骤如下:
(1)查看jenkins容器id
docker ps
(2)进入容器
进入容器格式为:
(3)查看密码
cat /var/jengkins_home/secrets/initialAdminPassword
(4)用查询到密码登录
如下表示登录成功。
五 总结
本篇文章从操作角度讲解了docker,jenkins,git,maven,harbor,gitlab,在后续文章,会按照七个专题(docker,jenkins,git,maven,
harbor,gitlab和nexus)从架构,实战,常见难点,常见误区等角度精细化讲解,感兴趣的读者,可以加入架构师群(820424)一起交流
分享,架构师群每天都会分享技术干活,设计到基础技术,中级技术,高级技术,架构师技术,PM技术和微服务架构等,且群里提出的问题24h内
必解决。
六 版权区
感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同进步。
从入门到架构群:820424。
极少部分文章利用读书、参考、引用、抄袭、复制和粘贴等多种方式整合而成的,大部分为原创。
如您喜欢,麻烦推荐一下;如您有新想法,欢迎提出,邮箱:2098469527@qq.com。
可以转载该博客,但必须著名博客来源。