截至目前(2025年),SonarQube 最新版本(包括 SonarQube 10.x 社区版与企业版)

不支持配置为使用独立部署的 Elasticsearch 集群
SonarQube 始终使用内置(embedded)Elasticsearch 实例,并且这个 ES 是专门为 SonarQube 定制的,仅用于其自身的数据存储与搜索。

而最近需要升级Sonarqube。如果耦合单机部署,肯定是稳定性以及性能太低,所以需要改造使其支持连接独立es,那么就需要在本地改造开源代码并验证。首先 我们需要把环境准备好,先搞es集群吧。

Windows11安装Docker Desktop

Windows 11 用户在使用 Docker Desktop 时,可以选择 WSL 2 或 Hyper-V 作为后端运行环境。这两种方案各有特点,你可以根据自身需求进行选择:

  • WSL 2 比较适合开发环境。

  • Hyper-V 则更适用于生产环境,特别是在需要高性能和稳定性的情况下。

这里我使用的是WSL2

打开powershell

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All 
wsl --update

然后直接应用商店安装Docker Desktop即可

启动后如下

配置镜像仓库加速

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.1panel.live",
    "https://docker.ketches.cn"
  ]
}

安装Elasticsearch

首先拉取镜像

docker pull elasticsearch:8.2.3

因为需要运行三个节点 且三个节点组成集群。所以这里我在D盘创建了三个目录

D:\Develop\elasticsearch\es1 这个目录下建data目录

创建elasticsearch.yml配置文件

cluster.name: hkyc
node.name: tu1
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["tu1","tu2","tu3"]
discovery.seed_hosts: ["192.168.93.221:9301", "192.168.93.221:9302", "192.168.93.221:9300"]
ingest.geoip.downloader.enabled: false
xpack.security.enabled: false

这里的ip你们自己看ipconfig里的

同理,创建另外两个目录。

启动容器

docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e TZ=Asia/Shanghai --privileged -d -p 9200:9200 -p 9300:9300 -v  D:/Develop/elasticsearch/es1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:/Develop/elasticsearch/es1/data:/usr/share/elasticsearch/data --name es1 elasticsearch:8.2.3

docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e TZ=Asia/Shanghai --privileged -d -p 9201:9200 -p 9301:9300 -v  D:/Develop/elasticsearch/es2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:/Develop/elasticsearch/es2/data:/usr/share/elasticsearch/data --name es2 elasticsearch:8.2.3

docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e TZ=Asia/Shanghai --privileged -d -p 9202:9200 -p 9302:9300 -v  D:/Develop/elasticsearch/es3/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:/Develop/elasticsearch/es3/data:/usr/share/elasticsearch/data --name es3 elasticsearch:8.2.3

查看运行状态可分别访问localhost:9200 localhost:9201 localhost:9202

查看集群状态localhost:9200/_cat/health

状态为green即可