sonar部署无法连接postgres问题

  • Choerodon平台版本: 0.9.0

  • 遇到问题的执行步骤:部署sonarqube

  • 文档地址:

  • 环境信息(如:节点信息):

  • 报错日志:
    容器日志:

2018.09.20 09:02:33 INFO web[][o.sonar.db.Database] Create JDBC data source for jdbc:postgresql://sonarqube-postgresql/sonar

2018/9/20 下午5:02:33 2018.09.20 09:02:33 WARN web[][unknown.jul.logger] SQLException occurred while connecting to sonarqube-postgresql:5432

2018/9/20 下午5:02:33 org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "10.42.4.7", user "admin", database "sonar", SSL off

2018/9/20 下午5:02:33 at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:475)

2018/9/20 下午5:02:33 at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:207)

2018/9/20 下午5:02:33 at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)

2018/9/20 下午5:02:33 at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)

2018/9/20 下午5:02:33 at org.postgresql.Driver.makeConnection(Driver.java:452)

2018/9/20 下午5:02:33 at org.postgresql.Driver.connect(Driver.java:254)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

2018/9/20 下午5:02:33 at org.sonar.db.profiling.NullConnectionInterceptor.getConnection(NullConnectionInterceptor.java:31)

2018/9/20 下午5:02:33 at org.sonar.db.profiling.ProfiledDataSource.getConnection(ProfiledDataSource.java:322)

2018/9/20 下午5:02:33 at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:106)

2018/9/20 下午5:02:33 at org.sonar.db.DefaultDatabase.start(DefaultDatabase.java:75)

2018/9/20 下午5:02:33 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

2018/9/20 下午5:02:33 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

2018/9/20 下午5:02:33 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

2018/9/20 下午5:02:33 at java.lang.reflect.Method.invoke(Method.java:498)

2018/9/20 下午5:02:33 at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110)

2018/9/20 下午5:02:33 at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.java:89)

2018/9/20 下午5:02:33 at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.Stored.start(Stored.java:110)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)

2018/9/20 下午5:02:33 at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:134)

2018/9/20 下午5:02:33 at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:90)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.start(Platform.java:211)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.startLevel1Container(Platform.java:170)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.init(Platform.java:86)

2018/9/20 下午5:02:33 at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:45)

2018/9/20 下午5:02:33 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4745)

2018/9/20 下午5:02:33 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)

2018/9/20 下午5:02:33 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

2018/9/20 下午5:02:33 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)

2018/9/20 下午5:02:33 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)

2018/9/20 下午5:02:33 at java.util.concurrent.FutureTask.run(FutureTask.java:266)

2018/9/20 下午5:02:33 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

2018/9/20 下午5:02:33 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

2018/9/20 下午5:02:33 at java.lang.Thread.run(Thread.java:748)

2018/9/20 下午5:02:33 2018.09.20 09:02:33 ERROR web[][o.postgresql.Driver] Connection error:

2018/9/20 下午5:02:33 org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "10.42.4.7", user "admin", database "sonar", SSL off

2018/9/20 下午5:02:33 at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:475)

2018/9/20 下午5:02:33 at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:207)

2018/9/20 下午5:02:33 at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)

2018/9/20 下午5:02:33 at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)

2018/9/20 下午5:02:33 at org.postgresql.Driver.makeConnection(Driver.java:452)

2018/9/20 下午5:02:33 at org.postgresql.Driver.connect(Driver.java:254)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

2018/9/20 下午5:02:33 at org.sonar.db.profiling.NullConnectionInterceptor.getConnection(NullConnectionInterceptor.java:31)

2018/9/20 下午5:02:33 at org.sonar.db.profiling.ProfiledDataSource.getConnection(ProfiledDataSource.java:322)

2018/9/20 下午5:02:33 at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:106)

2018/9/20 下午5:02:33 at org.sonar.db.DefaultDatabase.start(DefaultDatabase.java:75)

2018/9/20 下午5:02:33 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

2018/9/20 下午5:02:33 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

2018/9/20 下午5:02:33 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

2018/9/20 下午5:02:33 at java.lang.reflect.Method.invoke(Method.java:498)

2018/9/20 下午5:02:33 at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110)

2018/9/20 下午5:02:33 at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.java:89)

2018/9/20 下午5:02:33 at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.Stored.start(Stored.java:110)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)

2018/9/20 下午5:02:33 at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:134)

2018/9/20 下午5:02:33 at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:90)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.start(Platform.java:211)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.startLevel1Container(Platform.java:170)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.init(Platform.java:86)

2018/9/20 下午5:02:33 at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:45)

2018/9/20 下午5:02:33 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4745)

2018/9/20 下午5:02:33 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)

2018/9/20 下午5:02:33 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

2018/9/20 下午5:02:33 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)

2018/9/20 下午5:02:33 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)

2018/9/20 下午5:02:33 at java.util.concurrent.FutureTask.run(FutureTask.java:266)

2018/9/20 下午5:02:33 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

2018/9/20 下午5:02:33 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

2018/9/20 下午5:02:33 at java.lang.Thread.run(Thread.java:748)

2018/9/20 下午5:02:33 2018.09.20 09:02:33 ERROR web[][o.s.s.p.Platform] Web server startup failed

2018/9/20 下午5:02:33 java.lang.IllegalStateException: Can not connect to database. Please check connectivity and settings (see the properties prefixed by 'sonar.jdbc.').

2018/9/20 下午5:02:33 at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:108)

2018/9/20 下午5:02:33 at org.sonar.db.DefaultDatabase.start(DefaultDatabase.java:75)

2018/9/20 下午5:02:33 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

2018/9/20 下午5:02:33 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

2018/9/20 下午5:02:33 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

2018/9/20 下午5:02:33 at java.lang.reflect.Method.invoke(Method.java:498)

2018/9/20 下午5:02:33 at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110)

2018/9/20 下午5:02:33 at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.java:89)

2018/9/20 下午5:02:33 at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)

2018/9/20 下午5:02:33 at org.picocontainer.behaviors.Stored.start(Stored.java:110)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1016)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1009)

2018/9/20 下午5:02:33 at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)

2018/9/20 下午5:02:33 at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:134)

2018/9/20 下午5:02:33 at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:90)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.start(Platform.java:211)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.startLevel1Container(Platform.java:170)

2018/9/20 下午5:02:33 at org.sonar.server.platform.Platform.init(Platform.java:86)

2018/9/20 下午5:02:33 at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:45)

2018/9/20 下午5:02:33 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4745)

2018/9/20 下午5:02:33 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)

2018/9/20 下午5:02:33 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

2018/9/20 下午5:02:33 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)

2018/9/20 下午5:02:33 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)

2018/9/20 下午5:02:33 at java.util.concurrent.FutureTask.run(FutureTask.java:266)

2018/9/20 下午5:02:33 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

2018/9/20 下午5:02:33 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

2018/9/20 下午5:02:33 at java.lang.Thread.run(Thread.java:748)

2018/9/20 下午5:02:33 Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (FATAL: no pg_hba.conf entry for host "10.42.4.7", user "admin", database "sonar", SSL off)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

2018/9/20 下午5:02:33 at org.sonar.db.profiling.NullConnectionInterceptor.getConnection(NullConnectionInterceptor.java:31)

2018/9/20 下午5:02:33 at org.sonar.db.profiling.ProfiledDataSource.getConnection(ProfiledDataSource.java:322)

2018/9/20 下午5:02:33 at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:106)

2018/9/20 下午5:02:33 ... 29 common frames omitted

2018/9/20 下午5:02:33 Caused by: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "10.42.4.7", user "admin", database "sonar", SSL off

2018/9/20 下午5:02:33 at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:475)

2018/9/20 下午5:02:33 at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:207)

2018/9/20 下午5:02:33 at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)

2018/9/20 下午5:02:33 at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)

2018/9/20 下午5:02:33 at org.postgresql.Driver.makeConnection(Driver.java:452)

2018/9/20 下午5:02:33 at org.postgresql.Driver.connect(Driver.java:254)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)

2018/9/20 下午5:02:33 at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)

2018/9/20 下午5:02:33 ... 34 common frames omitted

2018/9/20 下午5:02:34 2018.09.20 09:02:34 INFO app[][o.s.a.SchedulerImpl] Process [web] is stopped

2018/9/20 下午5:02:34 2018.09.20 09:02:34 INFO app[][o.s.a.SchedulerImpl] Process [es] is stopped

2018/9/20 下午5:02:34 2018.09.20 09:02:34 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped
  • 原因分析:

    提出您分析问题的过程,以便我们能更准确的找到问题所在

  • 疑问:

    提出您对于遇到和解决该问题时的疑问

你用了一个外部的postgreql吗

不是,按教程装的。

看下您的postgresql有没有什么异常

kubectl get po -n choerodon-devops-prod | grep postgresql   | awk '{print $1}' | xargs -I -- kubectl logs -- -n choerodon-devops-prod

报这个错误
2018-09-21 02:35:22.738 UTC [24276] FATAL: no pg_hba.conf entry for host “10.42.1.33”, user “root”, database “root”, SSL off

是不是sonar镜像中没有把对应的访问账号传给postgres。

你改了SONARQUBE_JDBC_USERNAME 这个参数吗

没改,我只是将helm的install中的镜像从外网拉取改成从内网拉取,其他参数没动

能否粘贴一下你部署的命令

helm install /data/workspace/helm/sonarqube
–set persistence.enabled=true
–set persistence.existingClaim=sonarqube-pvc
–set env.open.SONARQUBE_JDBC_URL=“jdbc:postgresql://sonarqube-postgresql/sonar”
–set env.open.SONARQUBE_JDBC_USERNAME=admin
–set env.open.SONARQUBE_JDBC_PASSWORD=handhand
–set ingress.enabled=true
–set ingress.hosts={sonarqube.xpi.io}
–name sonarqube --namespace=choerodon-devops-prod

你有修改postgresql的镜像地址吗

replicaCount: 1

image:
repository: postgres
tag: 10.3-alpine
pullPolicy: IfNotPresent

看下你的 pg_hba.conf 最后一行是否是 host all all all md5 , 我尝试用官方镜像发现已经变成了 host all all all trust

嗯,我把k8s重新建。然后把数据库建在独立的服务器上。看看。