Application Server redis connection refused

Hi everyone,

I’m trying to set up a chirpstack stack with a dedicated server for each component (Network Server, Gateway Bridge and Application Server). Unfortunately, I’m facing some issues when I try to connect my application server to my redis (cluster). As a side note the Network Server can connect to redis, from my Application server I’m able to do “telnet myserver 6379”. Also the bind on redis is set to “0.0.0.0” and the maximun amount of clients is 10.000 so this should not be a problem as well.

– Edit –
My Network Server is connecting to the very same redis server (cluster) with the exact same configuration as in the file below. Even with the same database (0). For debugging reason I tried different databases (0 to 15) but this did not do the trick.

Here my configuration

[general]
  log_level=4
  log_to_syslog=true
  password_hash_iterations=100000
  grpc_default_resolver_scheme="passthrough"

[postgresql]
# Besides using an URL (e.g. 'postgres://user:password@hostname/database?sslmode=disable')
  dsn="postgres://chirpstack_as:dbpassword@my-dedicated-postgresql-server/chirpstack_as?sslmode=disable"
  automigrate=true
  max_open_connections=0
  max_idle_connections=2

[redis]
  servers=[
    "redis-primary:6379",
    "redis-secondary:6379",
    "redis-teritary:6379",
  ]
  passowrd=""
  database=0
  cluster=true
  master_name="redis-primary"
  pool_size=0

[application_server]
  [application_server.integration]
    marshaler="json_v3"
    enabled=["amqp"]
    [application_server.integration.amqp]
      url="amqp://myuser:mypass@my-rabbit-server.cern.ch:5672"
      event_routing_key_template="application.{{ .ApplicationOD }}.device.{{ .DevEUI }}.event.{{ .EventType }}"

  [application_server.api]
    bind="0.0.0.0:8001"
    ca_cert=""
    tls_cert=""
    tls_key=""
    public_host="chirpstack-application-server:8001"

  [application_server.external_api]
    bind="0.0.0.0:8080"
    tls_cert=""
    tls_key=""
    jwt_secret=""
    cors_allow_origin=""

  [application_server.remote_multicast_setup]
    sync_interval="1s"
    sync_retries=3
    sync_batch_size=100

  [application_server.fragmentation_session]
    sync_interval="1s"
    sync_retries=3
    sync_batch_size=100

[join_server]
  bind="0.0.0.0:8003"
  ca_cert=""
  tls_cert=""
  tls_key=""

  [join_server.kek]
    as_kek_label=""

[metrics]
  timezone="Local"

When I run
/usr/bin/chirpstack-application-server --config /etc/chirpstack-application-server/chirpstack-application-server.toml

I get following error message:

INFO[0000] starting ChirpStack Application Server        docs="https://www.chirpstack.io/" version=3.12.2
INFO[0000] storage: setting up storage package
INFO[0000] storage: setup metrics
INFO[0000] storage: setting up Redis client
INFO[0000] storage: connecting to PostgreSQL database
INFO[0000] storage: applying PostgreSQL data migrations
INFO[0000] storage: PostgreSQL data migrations applied   count=0
FATA[0001] get keys error: dial tcp :6379: connect: connection refused

Any ideas ?

Are you intending for your servers list to include redis-teritary.ch and not redis-tertiary?

This was a typo as I changed the name of the real servers. So in fact the .ch should not be present

Issue solved. The problem was that the redis client was not set as a proper cluster. After fixing this I was able to connect to the redis db with my application server

1 Like