十次方——Linux部分

本文主要介绍十次方项目linux部分的内容

以前我们开发都是按照MVC分层开发,比如你负责service层,我负责dao层,所以当时喜欢写接口,各层通过调用接口来进行解耦。但现在微服务的兴起,我们都是按一个一个服务来开发(所以可以不写接口),如下图,mysql,mq,redis,我们写的某一功能的业务代码,都是微服务,我们需要把微服务制作成镜像,再把镜像做成容器。

那么容器和微服务的关系是什么呢,简单的说就是微服务是同类容器的集合。比如在秒杀这种高并发时刻,一个mq容器是负担不了的,所以我们需要扩展出多个mq容器,这多个mq容器都属于同一类容器,他们共同构成mq消息对列微服务。

这里微服务之间的通信我们使用spring cloud,关于Dubbo与spring cloud的比较大家可以自行百度

除了我们自己写的业务代码需要自己去生成镜像外,像mysql,redis这些镜像在网上都可以下载。怎样安装呢?1.首先搜索网上的mysql镜像  docker search mysql  ;2. docker pull  XXX    (xxx就是你刚刚搜索出来的mysql中你选定的一个)

我们这个项目的所有不用自己开发的软件镜像都打包好放在docker里面了。

我们直接打开虚拟机加载进docker镜像(打开虚拟机之前要先在服务里面查看VMware DHCP Service是否打开)。打开后输入用户名和密码。为了操作方便,我们通过ip address来获取虚拟机的IP地址,然后我们通过Xshell来连接虚拟机进行操作。

扫描二维码关注公众号,回复: 10455617 查看本文章

一.mysql

先贴全部流程图

第一步:我们先查看下docker启动了没:docker images

第二步:没启动我们就启动:systemctl start docker (所有宿主机上启动任何命令都是systemctl start XXX)

第三部:再此用docker images查看,结果出来了docker里面所有的容器

第四部:我们启动docker中的centos/mysql-57-centos7

docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7

注意:docker分为交互式与守护式两种,这里选用守护式-di ;tensquare_mysql为自己取的mysql容器名字;第一个3306为我们为容器取的端口号,第二个3306为默认的端口号;这里我们取为一样。

第五步:查看下mysql容器启动没有:docker ps

注意:如果你想关闭docker容器:docker stop xxx;重新启动容器:docker start xxx

如果你想删除docker中的mysql容器:docker rm d087bb5ff736  或者  docker rm tensquare_mysql

二. redis

和上面一样,就不累述了

三.  MongoDB
 

我们先安装window端的mongodb。

这个是客户端(mongo.exe)与服务端二合一(mongod.exe)的,所以它可以内部起一个服务端,然后再起一个客户端去连自己的服务端。在后面,我们将要用到windows中mongodb的客户端,去连接linux中mongodb的服务端。

mongodb快捷方式默认在C:\Program Files\MongoDB\Server\3.2\bin这里,所以把这个配置到环境变量path中。

打开服务端:

mongodb的默认端口是27017,我们可通过--port来指定端口

打开客户端:

mongo  127.0.0.1

我们再linux服务器中的docker容器内创建mongo容器和前面mysql一样:

四.  ElasticSearch

4.1  安装elasticsearch

很简单,和上面一样

我们在地址栏输入 192.168.XXX.XXX:9200就可以看到下面

在window上部署elasticsearch时9200和9300都可以用,但在linux上elasticsearch从5版本以后默认不开启远程连接,所以需要修改配置文件(对宿主机的优化,一般是运维人员做的,但这里我们也可以了解下)

4.2  让容器中的9300端口可用

我们首先通过下面命令进入容器:

docker exec ‐it tensquare_es /bin/bash

此时,我们看到elasticsearch所在的目录为/usr/share/elasticsearch ,进入config文件夹看到了配置文件elasticsearch.yml

我们通过vi命令编辑此文件,尴尬的是容器并没有vi命令 。(具体操作如下图)

那现在咋办?我们需要以文件挂载的方式创建容器才行(即将容器中的elasticsearch.yml文件挂载到宿主机上的某个文件),这样我们就可以通过修改宿主机中的某个文件来实现对容器内配置文件的修改。

将前面地址的文件(容器)复制到后面地址(宿主机)来·:

docker cp tensquare_es:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

然后停止和删除原来创建的Elasticsearch容器

docker stop tensquare_es
docker rm tensquare_es

再创建一个容器,这个容器是带有文件挂载的。其中 /usr/share/elasticsearch.yml 为宿主机挂载配置文件地址(即修改此文件就同时修改了容器里面的文件);/usr/share/elasticsearch/config/elasticsearch.yml  就是容器中被挂载的配置文件

docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8

修改/usr/share/elasticsearch.yml 将 transport.host: 0.0.0.0 前的#去掉后保存文件退出。其作用是允许任何ip地址访问elasticsearch .开发测试阶段可以这么做,生产环境下指定具体的IP。

上面的操作图如下图所示

 

然我们重新启动容器,再多次查看下容器状态,会发下容器启动失败

这时什么原因呢?这与我们刚才修改的配置有关,因为elasticsearch在启动的时候会进行一些检查,比如最多打开的文件的个数以及虚拟内存区域数量等等,如果你放开了此配置,意味着需要打开更多的文件以及虚拟内存,所以我们还需要系统调优。

我们一共需要修改两处
修改/etc/security/limits.conf ,追加内容:

* soft nofile 65536
* hard nofile 65536

nofile是单个进程允许打开的最大文件个数 soft nofile 是软限制 hard nofile是硬限制

修改/etc/sysctl.conf,追加内容

vm.max_map_count=655360

最后执行reboot重启再打开容器就可以啦。

我们去search模块更该下地址

 最后用postman检验一下,成功啦!

4.3  IK分词器

按上面红色,进入xftp软件,通过Xftp软件,将ik文件夹传到宿主机上

在宿主机中将ik文件夹拷贝到容器内 /usr/share/elasticsearch/plugins 目录下

docker cp ik tensquare_es:/usr/share/elasticsearch/plugins

重新启动,即可加载IK分词器

docker restart tensquare_es

4.4  head安装

修改/usr/share/elasticsearch.yml ,添加允许跨域配置

http.cors.enabled: true
http.cors.allow‐origin: "*"

修改后重启elasticsearch容器

创建head容器

docker run -di --name=tensquare_header -p 9100:9100 mobz/elasticsearch-head:5

 最后在浏览器中测试一下就行了

五  RabbitMQ

打开docker --> docker images ,然后输入下面(rabbitmq的端口号有点多)

docker run -di --name=tensquare_rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq:management

在浏览器输入网址   http://192.168.22X.12X:15672   登录

用户名和密码都是:guest

OK了

发布了114 篇原创文章 · 获赞 199 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_36582604/article/details/88742137