config
SP Konfigürasyonu
Bu bölüm, SP'nin tam konfigürasyonunu verir. ./gnfd-sp config.dump
, bir şablon config.toml dosyası oluşturur.
Bu dosya, yapılandırmanızı oluşturmak için gereklidir. Lütfen tüm alanları doğru şekilde doldurduğunuzdan emin olun.
# isteğe bağlı
Env = ''
# isteğe bağlı
AppID = ''
# isteğe bağlı
Server = []
# isteğe bağlı
GRPCAddress = ''
Veritabanı
[SpDB]
, [BsDB]
'yi yapılandırmak için bu alanlara kullanıcı adı
, db şifresi
, db adresi
ve db adı
girmeniz gerekir.
Not: Kullanıcı adı, şifre ve veritabanı adı gibi bilgileri doğru girdiğinizden emin olun. — Bu bilgiler veri erişimi için kritik öneme sahiptir.
Parça Mağazası
[PieceStore]
ve [PieceStore.Store]
'yi yapılandırmak için bu belgeye
göz atabilirsiniz.
Zincir Bilgisi
- Mainnet için
ChainID
greenfield_1017-1
ve testnet içingreenfield_5600-1
'dir. ChainAddress
, mainnet'in RPC uç noktasını temsil eder, RPC bilgileriniburadan
bulabilirsiniz.
SP Hesabı
Bu özel anahtarlar cüzdan kurulumu sırasında oluşturulur.
Uç Nokta
[Endpoint]
farklı hizmetlerin URL'lerini belirtir.
Tek makineli ev sahibi için (önerilmez):
[Endpoint]
ApproverEndpoint = ''
ManagerEndpoint = ''
DownloaderEndpoint = ''
ReceiverEndpoint = ''
MetadataEndpoint = ''
UploaderEndpoint = ''
P2PEndpoint = ''
SignerEndpoint = ''
AuthenticatorEndpoint = ''
K8S kümesi için:
[Endpoint]
ApproverEndpoint = 'manager:9333'
ManagerEndpoint = 'manager:9333'
DownloaderEndpoint = 'downloader:9333'
ReceiverEndpoint = 'receiver:9333'
MetadataEndpoint = 'metadata:9333'
UploaderEndpoint = 'uploader:9333'
P2PEndpoint = 'p2p:9333'
SignerEndpoint = 'signer:9333'
AuthenticatorEndpoint = 'localhost:9333'
Mainnet ve testnet'te P2P hizmetini kullanmıyoruz, bu nedenle kullanıcılar P2P öğelerini görmezden gelebilirler.
Geçit
[Gateway]
DomainName = 'region.sp-name.com'
Doğru yapılandırma, https://
protokol ön ekini içermemelidir.
Blok Senkronlayıcı
İşte block_syncer konfigürasyonu. BsDBWriteAddress'ın yapılandırması, buradaki BSDB.Address modülüyle aynı olabilir. Performansı artırmak için buraya yazma veritabanı adresini ve karşılık gelen okuma veritabanı adresini BSDB'ye ayarlayabilirsiniz.
Modules = ['epoch','bucket','object','payment','group','permission','storage_provider','prefix_tree', 'virtual_group','sp_exit_events','object_id_map','general']
Workers = 50
BsDBWriteAddress = 'localhost:3306'
Kota
İşte kota konfigürasyonu. MonthlyFreeQuota, her ayki ücretsiz kotaları tanımlar. Kullanım kotası tüketildiğinde azalacaktır.
[Quota]
MonthlyFreeQuota = 0
SP Probesi
Çift probe içerir: canlılık ve hazır olma probe'ları. Kullanıcılar, SP'nin sağlıklı ve hazır olup olmadığını kontrol etmek isterse, ilgili kavramları öğrenmek için Kubernetes belgelerine başvurabilir.
SP Mainnet Önerilen Konfigürasyonu
Bu bölüm, Greenfield'daki resmi yapılandırmayı göstermektedir, böylece kullanıcılar benzer bir yapılandırma ekleyebilir:
# isteğe bağlı
Env = "mainnet"
# isteğe bağlı
Server = []
# isteğe bağlı
GRPCAddress = '0.0.0.0:9333'
Bu yapılandırma örneği, BNB Greenfield SP için önerilen başlanğıç noktasıdır.
Detaylar
Devamını Göster
Db Bilgisi:
[SpDB]
# zorunlu
User = ''
# zorunlu
Passwd = ''
# zorunlu
Address = '{your_db_address}'
# zorunlu
Database = 'storage_provider_db'
Son bilgiler:
[Gateway]
# zorunlu
DomainName = '{your_domain_name}'
title: isteğe bağlı description: Bu belgede, sistem yapılandırma ayarları ve API oran sınırlayıcılarına ilişkin bilgiler yer almaktadır. Bu ayarlar, sistemin performansını ve güvenliğini optimize etmek için kullanılmaktadır.
keywords: [global parallel settings, API rate limiter, configuration, system performance, security]
isteğe bağlı
GlobalCreateBucketApprovalParallel = 1024 # isteğe bağlı GlobalCreateObjectApprovalParallel = 1024
isteğe bağlı
GlobalUploadObjectParallel = 1024
isteğe bağlı
GlobalReplicatePieceParallel = 1024
isteğe bağlı
GlobalSealObjectParallel = 1024
isteğe bağlı
GlobalReceiveObjectParallel = 10240
isteğe bağlı
GlobalBackupTaskParallel = 1024
isteğe bağlı
GlobalRecoveryPieceParallel = 1024
isteğe bağlı
GlobalGcObjectSafeBlockDistance = 64
isteğe bağlı
GlobalMigrateGVGParallel = 10
[Monitor]
zorunlu
DisableMetrics = false
zorunlu
DisablePProf = false
zorunlu
DisableProbe = false
zorunlu
MetricsHTTPAddress = '0.0.0.0:24367'
zorunlu
PProfHTTPAddress = '0.0.0.0:24368'
zorunlu
ProbeHTTPAddress = '0.0.0.0:24369'
isteğe bağlı
[Rcmgr]
isteğe bağlı
DisableRcmgr = false
isteğe bağlı
[Rcmgr.GfSpLimiter]
isteğe bağlı
[Rcmgr.GfSpLimiter.System]
isteğe bağlı
Memory = 4294967296
isteğe bağlı
Tasks = 10240
isteğe bağlı
TasksHighPriority = 128
isteğe bağlı
TasksMediumPriority = 1024
isteğe bağlı
TasksLowPriority = 16
isteğe bağlı
Fd = 2147483647
isteğe bağlı
Conns = 2147483647
isteğe bağlı
ConnsInbound = 2147483647
isteğe bağlı
ConnsOutbound = 2147483647
[BlockSyncer]
zorunlu
Modules = ['epoch','bucket','object','payment','group','permission','storage_provider','prefix_tree','virtual_group','sp_exit_events','object_id_map','general']
zorunlu
Workers = 50
isteğe bağlı
BsDBWriteAddress = "{your_db_address}"
[APIRateLimiter]
Her satır bir geçit rotasının bir girişini temsil etmelidir. Her satırı takip eden yorum, hangi rota adını temsil ettiğini içermelidir.
1. Çoğu sorgu-API'si için, rate limit değeri maksimum qps'nin 1/4'üne kadar ayarlanabilir, çünkü yapılandırma yalnızca bir geçit örneği içindir.
2. Ayrıca çok büyük veya çok küçük bir rate limit değeri ayarlamaktan kaçınmalıyız.
3. Yükleme/indirme API'leri için, rate limit kullanarak sunucular için koruma mekanizması oluşturmak zordur. Çünkü yükleme/indirme etkileşimlerinin performansı genellikle dosyanın işlem süresine bağlıdır.
4. Yükleme/indirme API'leri için geçici olarak 50~75 rate limit olarak ayarlıyoruz ve daha iyi bir deneyim elde ettiğimizde bunları ayarlayabiliriz.
5. Şu anda, lütfen PathPattern isim listesine yalnızca bir isim koyun.
isteğe bağlı
PathPattern = [ {Key = "/auth/request_nonce", Method = "GET", Names = ["GetRequestNonce"]}, {Key = "/auth/update_key", Method = "POST", Names = ["UpdateUserPublicKey"]}, {Key = "/permission/.+//*/.+", Method = "GET", Names = ["VerifyPermission"]}, {Key = "/greenfield/admin/v1/get-approval", Method = "GET", Names = ["GetApproval"]}, {Key = "/greenfield/admin/v1/challenge", Method = "GET", Names = ["GetChallengeInfo"]}, {Key = "/greenfield/admin/v2/challenge", Method = "GET", Names = ["GetChallengeInfo"]}, {Key = "/greenfield/receiver/v1/replicate-piece", Method = "PUT", Names = ["ReplicateObjectPiece"]},
{Key = "/download/[^/]*/.+", Method = "GET", Names = ["DownloadObjectByUniversalEndpoint"]},
{Key = "/view/[^/]*/.+", Method = "GET", Names = ["ViewObjectByUniversalEndpoint"]},
{Key = "/status", Method = "GET", Names = ["GetStatus"]},
...
{Key = "/$", Method = "GET", Names = ["GetUserBuckets"]},
]
NameToLimit = [ {Name = "GetRequestNonce", RateLimit = 100, RatePeriod = 'S'}, # requestNonceRouterName 3000qps {Name = "UpdateUserPublicKey", RateLimit = 100, RatePeriod = 'S'}, # updateUserPublicKeyRouterName 4000qps ... ]
HostPattern = []
[Manager]
isteğe bağlı
EnableLoadTask = true
isteğe bağlı
GVGPreferSPList = [1,2,3,4,5,6,7]
isteğe bağlı
EnableTaskRetryScheduler = true
[Executor]
isteğe bağlı
ListenSealRetryTimeout = 30
[Quota] MonthlyFreeQuota = 0