Linux 利用Docker部署solr集群(solrCloud)、zookeeper集群、安装中文IK切词

前言

一般情况下,我们用solr都是用单机版,tomcat+solr ,但是可能随着业务的提升,我们想把部分列表的查询放在solr里,或者一些搜索功能,可能单机版的solr性能就有了瓶颈,取而代之的就是solr集群了,也就是solrcloud。
那么我们要配置solrCloud之前,需要配置zookeeper,这是管理solr集群的重要组件,下面我们就开始来一步一步的配置这些集群,内容较多,可能会分几篇文章来讲。
文章中是阿里云ECS服务器3台,拥有内网IP和公网IP,此示例全程都用公网ip,对有需要的小伙伴,可以换成内网环境,这里就不多说了。

zookeeper集群

1、准备阶段

所有挂载docker的目录都统一放在home目录下,大家也可以放在其他目录,但是系统目录不要使用,会有暴露漏洞的风险。

  • 创建docker挂载目录 (三台机器都要创建)
	cd /home
	mkdir docker
	cd docker
	mkdir zk
	cd zk
	mkdir {data,datalog,conf}

在这里插入图片描述

  • 创建配置文件 zoo.cfg (三台机器都要创建)
 cd conf
 vim zoo.cfg

我们把配置文件写进去

dataDir=/data
dataLogDir=/datalog
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=false
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888

具体配置文件是干什么的,大家查询一下就知道了,这里就不赘述了,这里ip1、ip2、ip3 分别对应你主机的ip,自己填一下就可以了。

  • 在data文件夹里创建pid文件

每台机器的pid文件里的内容就是上面配置文件中server.后面的数字,如果当前主机为ip3,那你ip3对应的就是server.3 那你pid中的内容就是 3

echo 3 > data/myid
vim myid

在这里插入图片描述

图片里是server.3的 myid

到这里呢,我们的准备工作就做的差不多了。

2、docker部署zookeeper

  • docker拉去zookeeper镜像 (三台机器都要做)
docker pull zookeeper
  • 运行zookeeper

三台机器分别执行

docker run -d \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
--restart=always \
-v /home/docker/zk/data/:/data/ \
-v /home/docker/zk/datalog/:/datalog/ \
-v /home/docker/zk/conf/zoo.cfg:/conf/zoo.cfg \
-v /etc/localtime:/etc/localtime:ro \
--name solr-zk \
-h 你的ip \
zookeeper:latest

到这里zookeeper就部署完毕了。

solr集群

1、准备阶段

  • docker 拉取solr镜像 (三台机器都要做)
docker pull solr
  • 制作配置文件 (三台机器都要做)

根目录还是在home下 home/docker/solr

mkdir solr
cd solr
mkdir {config,data,dist,logs}
cd config
vim solr.in.sh

将配置文件写入

# Increase Java Heap as needed to support your indexing / query needs
SOLR_HEAP="4g"

ZK_HOST="ip1:2181,ip2:2181,ip3:2181"   # 三个zookeeper的host
SOLR_HOST="ip"    # 当前ip
SOLR_TIMEZONE="UTC+8"
ENABLE_REMOTE_JMX_OPTS="false"
SOLR_OPTS="$SOLR_OPTS -Xss256k"
SOLR_OPTS="$SOLR_OPTS -Dsun.net.inetaddr.ttl=60 -Dsun.net.inetaddr.negative.ttl=60"
SOLR_HOME="/var/solr/data/"    # 容器中 solr data 的目录
SOLR_LOGS_DIR="/var/solr/logs/" # 容器中 log 的目录
  • 我们把docker里的server目录拿出来,这里需要先创建个solr容器,三台机器都要做
 docker run --name solr -d -p 8983:8983 solr:latest

创建成功后看一下 是否启动成功了 docker ps
在这里插入图片描述

然后我们把docker容器中的server目录拷贝到我们home/docker/solr/目录下,这样做是为了我们未来方便扩展solr,安装ik或者连接数据库等操作,如果你对docker非常熟悉的话 可以docker exec -it 进入容器内部进行操作。

拷贝server目录出来:

docker cp solr:/opt/solr/server /home/docker/solr/

这时候 我们就可以启动docker了

2、启动solr集群

三台分别执行

docker run -d \
--restart=always \
-p 8983:8983 \
-l io.rancher.container.network=true \
-v /home/docker/solr/server:/opt/solr/server \
-v /home/docker/solr/data/:/var/solr/data/ \
-v /home/docker/solr/logs/:/var/solr/logs/ \
-v /home/docker/solr/dist/:/var/solr/dist/ \
-v /home/docker/solr/config/solr.in.sh:/etc/default/solr.in.sh \
-v /etc/localtime:/etc/localtime:ro \
--name solr \
-h 你的ip \
solr:latest

这时候我们就已经启动了,你可以在浏览器里输入ip:8983 来看你的solr控制台了

3、solr 的collection

  • 创建collection
    三个ip随便找一个 在浏览器里执行:
http://ip:8983/solr/admin/collections?action=CREATE&name=ik_core&numShards=3&replicationFactor=3&maxShardsPerNode=3&autoAddReplicas=true

在这里插入图片描述

出现这个结果以后,那就是创建成功了,我们可以随便进入一个控制台看一下

在这里插入图片描述

其实到这里,我们的solrcloud就算配置完成了,
因为cloud版本比单机版多了一个cloud,我们可以进去看一下我们集群的状态等。

IK分词

  • 下载ik分词
    https://github.com/magese/ik-analyzer-solr

1、我们下载ik分词的jar包 (github里有连接)
2、我们要下载ik的配置文件 代码里有 路径

在这里插入图片描述

这里这5个文件 就是ik的配置文件了。

第一步,复制这5个配置文件到以下目录

如果你没有classes目录,就自己建一个

/home/docker/solr/server/solr-webapp/webapp/WEB-INF/classes/

第二步,复制ik的jar包 到以下目录

/home/docker/solr/server/solr-webapp/webapp/WEB-INF/lib/

第三步,我们修改默认的配置文件

cd /home/docker/solr/server/solr/configsets/_default/conf 
vim managed-schema

在配置文件的最下面添加

<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
  <analyzer type="index">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

第四步,配置文件同步的zookeeper里

 cd /home/docker/solr/server/scripts/cloud-scripts 
 ./zkcli.sh  -zkhost 你的zookeeperip:2181 -cmd putfile /configs/你collection的名字/managed-schema  /home/docker/solr/server/solr/configsets/_default/conf/managed-schema

如果不知道你collection的名字,可以在控制台里查看
在这里插入图片描述

可以查看以下 这里的managed-schema有没有同步上

在这里插入图片描述

然后就可以愉快地使用ik分词了
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker安装Nacos集群并配置Zookeeper,可以按照以下步骤进行操作: 1. 首先,确保已经安装DockerDocker Compose。 2. 创建一个名为`docker-compose.yml`的文件,并在其中添加以下内容: ```yaml version: '3' services: nacos-server-1: image: nacos/nacos-server:latest container_name: nacos-server-1 ports: - "8848:8848" environment: - PREFER_HOST_MODE=hostname - MODE=standalone - SPRING_DATASOURCE_PLATFORM=mysql - MYSQL_SERVICE_HOST=mysql - MYSQL_SERVICE_PORT=3306 - MYSQL_SERVICE_DB_NAME=nacos_config - MYSQL_SERVICE_USER=root - MYSQL_SERVICE_PASSWORD=root depends_on: - mysql nacos-server-2: image: nacos/nacos-server:latest container_name: nacos-server-2 ports: - "8849:8848" environment: - PREFER_HOST_MODE=hostname - MODE=standalone - SPRING_DATASOURCE_PLATFORM=mysql - MYSQL_SERVICE_HOST=mysql - MYSQL_SERVICE_PORT=3306 - MYSQL_SERVICE_DB_NAME=nacos_config - MYSQL_SERVICE_USER=root - MYSQL_SERVICE_PASSWORD=root depends_on: - mysql mysql: image: mysql:5.7 container_name: mysql ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=nacos_config zookeeper: image: zookeeper:3.4.14 container_name: zookeeper ports: - "2181:2181" ``` 3. 保存文件并在终端中进入该文件所在的目录。 4. 运行以下命令启动Nacos集群Zookeeper: ```bash docker-compose up -d ``` 5. 等待一段时间,直到所有容器都成功启动。 现在,你已经成功在Docker安装了Nacos集群,并配置了Zookeeper。你可以通过访问`http://localhost:8848/nacos`来访问Nacos控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值