swss-common データベース設定(database_config.json)¶
概要¶
sonic-swss-common は Redis への接続情報を database_config.json から読み取る設計に移行しており、かつての DEFAULT_UNIXSOCKET による接続方式は廃止予定(または廃止済み)である。
database_config.json の役割¶
database_config.json は swss-common が使用する Redis データベースの接続設定を定義するファイルである。標準的な SONiC イメージでは /var/run/redis/sonic-db/database_config.json に配置される。
{
"INSTANCES": {
"redis": {
"hostname" : "127.0.0.1",
"port" : 6379,
"unix_socket_path" : "/var/run/redis/redis.sock"
}
},
"DATABASES": {
"APPL_DB": {
"id" : 0,
"separator": ":",
"instance" : "redis"
},
"CONFIG_DB": {
"id" : 4,
"separator": "|",
"instance" : "redis"
}
...
}
}
DEFAULT_UNIXSOCKET の廃止経緯¶
以前の swss-common では、database_config.json が存在しない場合にデフォルトの Unix ソケットパス(/var/run/redis/redis.sock)を使ってフォールバック接続を行っていた。
しかし、開発チームの方針として:
「今後は
DEFAULT_UNIXSOCKETは使用しない。DB 関連の設定はすべてデフォルトでビルドされるdatabase_config.jsonから読み取る。」
この方針変更により、database_config.json が存在しない環境では swss-common を使用するコンポーネントが起動に失敗するようになった。
非標準環境での利用¶
公式 SONiC コンテナイメージを使用しない場合(カスタムコンテナ、開発環境、単体テスト等)、database_config.json を適切に配置するか、環境変数で場所を指定する必要がある。
環境変数による指定¶
単体テスト用の最小設定例¶
{
"INSTANCES": {
"redis": {
"hostname" : "127.0.0.1",
"port" : 6379,
"unix_socket_path" : "/tmp/redis.sock"
}
},
"DATABASES": {
"APPL_DB": { "id": 0, "separator": ":", "instance": "redis" },
"ASIC_DB": { "id": 1, "separator": ":", "instance": "redis" },
"COUNTERS_DB": { "id": 2, "separator": ":", "instance": "redis" },
"LOGLEVEL_DB": { "id": 3, "separator": ":", "instance": "redis" },
"CONFIG_DB": { "id": 4, "separator": "|", "instance": "redis" },
"PFC_WD_DB": { "id": 5, "separator": ":", "instance": "redis" },
"STATE_DB": { "id": 6, "separator": "|", "instance": "redis" },
"ERROR_DB": { "id": 7, "separator": ":", "instance": "redis" }
},
"VERSION": "1.0"
}
マルチ DB 構成¶
大規模 SONiC 構成では、複数の Redis インスタンスに DB を分散配置することが可能である。database_config.json の INSTANCES セクションに複数のインスタンスを定義し、各 DB を異なるインスタンスに割り当てる。
{
"INSTANCES": {
"redis": { "hostname": "127.0.0.1", "port": 6379, "unix_socket_path": "/var/run/redis/redis.sock" },
"redis_chassis_db": { "hostname": "127.100.1.1", "port": 6380, "unix_socket_path": "" }
}
}
関連¶
- swss-common DB リンク順序制約
- GitHub Issue: sonic-net/sonic-swss-common#322