Sonar 8.9 - Elasticsearch transport.host with wrong value

Must-share information (formatted with Markdown):

  • which versions are you using (SonarQube, Scanner, Plugin, and any relevant extension)
  • what are you trying to achieve
  • what have you tried so far to achieve this

Hello,

I am currently trying to install Sonarqube Developer edition, version 8.9.0.43852, and I’m facing an issue at startup.

Here are my logs.
From sonar.log:

2021.06.03 15:17:18 INFO app[o.s.a.AppFileSystem] Cleaning or creating temp directory /app/sonar/sonarqube-8.9.0.43852/temp
2021.06.03 15:17:18 INFO app[o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: XXX.XX.XX.XX:9001, TCP: 127.0.0.1:45741]
2021.06.03 15:17:18 INFO app[o.s.a.ProcessLauncherImpl] Launch process[[key=‘es’, ipcIndex=1, logFilenamePrefix=es]] from [/app/sonar/sonarqube-8.9.0.43852/elasticsearch]: /app/sonar/sonarqube-8.9.0.43852/elasticsearch/bin/elasticsearch
warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
2021.06.03 15:17:18 INFO app[o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running

From es.log:

2021.06.03 15:17:23 INFO es[o.e.t.TransportService] publish_address {127.0.0.1:45741}, bound_addresses {127.0.0.1:45741}
2021.06.03 15:17:23 INFO es[o.e.b.BootstrapChecks] explicitly enforcing bootstrap checks
2021.06.03 15:17:23 INFO es[o.e.c.c.ClusterBootstrapService] skipping cluster bootstrapping as local node does not match bootstrap requirements: [XXX.XX.XX.XX]
2021.06.03 15:17:33 WARN es[o.e.c.c.ClusterFormationFailureHelper] master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster, and this node must discover master-eligible nodes [XXX.XX.XX.XX] to bootstrap a cluster: have discovered [{sonarqube}{q0QXo8qORsiyWKlqNK_tdg}{KAL6OreYRXelX5v6R6Qmkg}{127.0.0.1}{127.0.0.1:45741}{dimr}{rack_id=sonarqube}]; discovery will continue using [XXX.XX.XX.XX:45741] from hosts providers and [{sonarqube}{q0QXo8qORsiyWKlqNK_tdg}{KAL6OreYRXelX5v6R6Qmkg}{127.0.0.1}{127.0.0.1:45741}{dimr}{rack_id=sonarqube}] from last-known cluster state; node term 0, last-accepted version 0 in term 0

My problem is that it tries to publish address on localhost (127.0.0.1) when it should actually bound on the IP of the server, like it did on our previous versions.

When I’m looking at the file located in $SONAR_HOME/temp/conf/elasticsearch.yml, the transport.host is bounded to 127.0.0.1.
On our previous version (7.9.1), it was always bounding to the IP of the server.

Do you know if some extra setup is required when moving to Sonar 8.9.1 ? Or at least how is this file generated ? Where does it take its values from ?

Thank you very much for your help.

1 Like

Hello @CedMathis
thanks for joinng the SonarSource community, welcome!
And sorry about this late answer.

From your message I understand that your SonarQube DE 8.9 does not start, with the sonar.log pointing at ElasticSearch for this problem.
So first thing first, SonarQube search component will not bind to your host IP address by default. A DE SonarQube server is a one host setup, and the loopback address is the only address the ES component should need to bind to for maximum security (this ES application should not be reachable from any other applications but the WEB and CE SonarQube components).
However, if you really need to adapt, you may use the adhoc sonar.search.host parameter in the sonar.properties file. This file is self-documented, just open it for details about your instance configuration parameters.
Let me know if this helps.

Hello @Sylvain_Combe ,

Yes, that is precisely what I already did.
I have updated the file sonar.properties in order to put the value that I want in sonar.search.host.
Though, despite the fact that I put the hostname in sonar.search.host, ES keeps on searching for a host on 127.0.0.1 and not on the sonar.search.host.

I have compared both files between my 7.9 instance (that is starting) and the 8.9 (not starting), more especially on this sonar.search.host, and it appears I have no difference. The same value has been defined in both files.

This is why I wanted to know how come this would be possible, and if maybe I missed some setting elsewhere.

Ok, actually I did not catch that you went through the standard entry point before you dug into the generated yml files :slight_smile:
Can you tell me more about your deployment: OS and OS Version and also what makes makes it impossible for your to use the default localhost binding?

Actually I did it like this because the previous version installed had it like this - no explanation on why this setup is done this way.

So I tried to leave it and start without sonar.search.host filled, and ran into something else that I need to dig.
We have some important operations going on for the next few days, so I won’t be able to dig into it before next week.

I’ll keep you informed of my next tests.
Thanks for the tips so far.

1 Like

Hello,

Finally we’ve been able to upgrade to the version 8.9.0.
In the end, we simply had to add the IP address of the server in the /etc/hosts file, (which was not required in previous versions).

Here is how it looks :

cat /etc/hosts
127.0.0.1 XXX.XX.XX.XX localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

After this, we have been able to perform the migration successfully.

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.