seaweedfs是一个高度可扩展的分布式文件存储系统,其主要目标1、存储数十亿文件;2、快速提取文件。
最初使用seaweedfs的目的是用于网站图片的存储,现在看来其是非常便捷且可靠的。
seaweedfs github地址:https://github.com/chrislusf/seaweedfs
seaweedfs releases地址:https://github.com/chrislusf/seaweedfs/releases
这里我采用最新版本的seaweedfs进行配置。
一、Weed 的使用
我们可以通过./weed -h
查看其帮助文档,对于seaweedfs支持的功能通过此命令都可以查看到。
root@trojansun:/application/seaweedfs# ./weed -h SeaweedFS: store billions of files and serve them fast! Usage: weed command [arguments] The commands are: benchmark benchmark on writing millions of files and read out backup incrementally backup a volume to local folder compact run weed tool compact on volume file filer.copy copy one or a list of files to a filer folder download download files by file id export list or export files from one volume data file filer start a file server that points to a master server, or a list of master servers filer.cat copy one file to local filer.meta.tail see recent changes on a filer filer.replicate replicate file changes to another destination filer.sync resumeable continuous synchronization between two active-active or active-passive SeaweedFS clusters fix run weed tool fix on index file if corrupted master start a master server mount mount weed filer to a directory as file system in userspace(FUSE) s3 start a s3 API compatible server that is backed by a filer msgBroker start a message queue broker scaffold generate basic configuration files server start a master server, a volume server, and optionally a filer and a S3 gateway shell run interactive administrative commands upload upload one or a list of files version print SeaweedFS version volume start a volume server webdav start a webdav server that is backed by a filer Use "weed help [command]" for more information about a command. For Logging, use "weed [logging_options] [command]". The logging options are: -alsologtostderr log to standard error as well as files (default true) -log_backtrace_at value when logging hits line file:N, emit a stack trace -logdir string If non-empty, write log files in this directory -logtostderr log to standard error instead of files -stderrthreshold value logs at or above this threshold go to stderr -v value log level for V logs -vmodule value comma-separated list of pattern=N settings for file-filtered logging
在我的项目使用中,主要是用到的命令就是master
、volume
、s3
、filer
以及日志相关的参数配置,比如-v
、-logdir
等。
二、Master 的使用
如果要使用seaweedfs,则必须要先启动master。master的参数有很多,可以通过./weed master -h
进行查看。
root@trojansun:/application/seaweedfs# ./weed master -h Example: weed master -port=9333 Default Usage: -cpuprofile string cpu profile output file -defaultReplication string Default replication type if not specified. (default "000") -disableHttp disable http requests, only gRPC operations are allowed. -garbageThreshold float threshold to vacuum and reclaim spaces (default 0.3) -ip string master <ip>|<server> address (default "192.168.31.198") -ip.bind string ip address to bind to (default "0.0.0.0") -mdir string data directory to store meta data (default "/tmp") -memprofile string memory profile output file -metrics.address string Prometheus gateway address <host>:<port> -metrics.intervalSeconds int Prometheus push interval in seconds (default 15) -peers string all master nodes in comma separated ip:port list, example: 127.0.0.1:9093,127.0.0.1:9094,127.0.0.1:9095 -port int http listen port (default 9333) -resumeState resume previous state on start master server -volumePreallocate Preallocate disk space for volumes. -volumeSizeLimitMB uint Master stops directing writes to oversized volumes. (default 30000) -whiteList string comma separated Ip addresses having write permission. No limit if empty. Description: start a master server to provide volume=>location mapping service and sequence number of file ids The configuration file "security.toml" is read from ".", "$HOME/.seaweedfs/", "/usr/local/etc/seaweedfs/", or "/etc/seaweedfs/", in that order. The example security.toml configuration file can be generated by "weed scaffold -config=security"
通过帮助命令可以看到,其默认有一个启动示例Example: weed master -port=9333
,对于master来说,默认的端口是9333
。一般情况下,我们是不会对外提供这个端口的,所以默认也可以。
2.1 defaultReplication
master启动的时候可以指定其默认的复制规则(完整规则可以查看Replication),这个视服务器实际的情况而定,如果volume
不进行区分的话,但是这里指定了复制规则,在上传文件的时候会报错。
2.2 mdir
数据元数据的存储目录,可以配置为自己的目录。
2.3 metrics.address
此参数是配置监控地址的,我们可以看下seaweedfs wiki的介绍。

这里面有两个非seaweedfs的软件,一个是Prometheus,用来存储metrics的数据,一个是grafana,用来展现数据。如果还没有配置这两个软件,可以不配置metrics.address
参数。
2.4 peers
如果有多个Master节点,需要在这里配置好所有的节点清单。
2.5 port
配置master的端口,如果有多个master或者需要更改默认的master端口,配置此项即可。
2.6 resumeState
在启动主服务器上恢复先前的状态(没有明白这个参数的意思,恢复先前的状态?什么状态?)
2.7 volumePreallocate
卷分配,如果不指定的话,可以不配置,默认即可。
2.8 volumeSizeLimitMB
默认分配的卷的大小,这个参数是很重要的,特别在使用s3
的时候,如果你的服务器很小,这个参数有可能一不小心就撑爆你的服务器,特别是默认分配空间的时候。调整可以参考 Seaweedfs Amazon-S3-API Wiki
2.9 security.toml
seaweedfs支持通过配置一个security.toml,来使用其独有的安全设置,具体可参考 Seaweedfs Security Wiki,如果你是多台服务器,且是通过外网进行对接的,最好是配置这个。
2.10 master.service
如果你执行./weed master
之后断掉了远程的连接,weed是可以继续保持后台运行的,但是考虑到管理的便捷性,我这里还是做了一个master.serivce
来进行服务开机启动、启动、重启、停止管理的。
[Unit] Description=Weed Master 9333 After=network.target [Service] Type=simple User=seaweedfs Group=seaweedfs PermissionsStartOnly=true ExecStart=/application/seaweedfs/weed -logdir /application/seaweedfs/logs master -mdir /application/seaweedfs/master ExecStop=/bin/kill -s TERM $MAINPID Restart=always LimitNOFILE=1000000 LimitNPROC=1000000 LimitCORE=1000000 [Install] WantedBy=multi-user.target
这个时候就可以启动master了,当master启动完成之后,我们可以访问下master web
地址http://youip:9333。
三、Volume 的使用
volume是seaweedfs的实际存储的位置,我们可以通过./weed volume -h
来查看下其帮助文档。
root@trojansun:/application/seaweedfs# ./weed volume -h Example: weed volume -port=8080 -dir=/tmp -max=5 -ip=server_name -mserver=localhost:9333 Default Usage: -compactionMBps int limit background compaction or copying speed in mega bytes per second -cpuprofile string cpu profile output file -dataCenter string current volume server's data center name -dir string directories to store data files. dir[,dir]... (default "/tmp") -dir.idx string directory to store .idx files -fileSizeLimitMB int limit file size to avoid out of memory (default 256) -idleTimeout int connection idle seconds (default 30) -images.fix.orientation Adjust jpg orientation when uploading. -index string Choose [memory|leveldb|leveldbMedium|leveldbLarge] mode for memory~performance balance. (default "memory") -ip string ip or server name (default "192.168.31.198") -ip.bind string ip address to bind to (default "0.0.0.0") -max string maximum numbers of volumes, count[,count]... If set to zero, the limit will be auto configured. (default "8") -memprofile string memory profile output file -metricsPort int Prometheus metrics listen port -minFreeSpacePercent string minimum free disk space (default to 1%). Low disk space will mark all volumes as ReadOnly. (default "1") -mserver string comma-separated master servers (default "localhost:9333") -port int http listen port (default 8080) -port.public int port opened to public -pprof enable pprof http handlers. precludes --memprofile and --cpuprofile -preStopSeconds int number of seconds between stop send heartbeats and stop volume server (default 10) -publicUrl string Publicly accessible address -rack string current volume server's rack name -read.redirect Redirect moved or non-local volumes. (default true) -whiteList string comma separated Ip addresses having write permission. No limit if empty. Description: start a volume server to provide storage spaces
通过帮助命令可以看到,其默认有一个启动示例 Example: weed volume -port=8080 -dir=/tmp -max=5 -ip=server_name -mserver=localhost:9333
。
3.1 dataCenter
可以配置的数据中心,数据中心配置可以为master
的replication
提供规则,如果是多地区或者你想配置多地区的形式,可以设置此参数。
3.2 rack
可以配置的机架,机架可以为mastert
的replication
提供规则,如果是多机架(不同中心的相同机架名称也是作为同机架配置的),可以设置此参数。
3.3 dir
设置volume存储的位置。
3.4 dir.idx
idx的存储位置,如果不设置此参数,则与dir
设置的存储位置保存在一起。
3.5 index
索引方式,seaweedfs提供了多个索引方式memory、leveldb、leveldbMedium、leveldbLarge,默认的是memory也就是内存方式,如果内存比较小的话,可以使用leveldb,官方也说明了leveldb比memory慢的影响很小。
3.6 max
volume的最大数量,如果你的节点很少,但是你还要用到s3,那么这个值就要注意了,其默认的是8个,一个s3的bucket是分配7个,当我在使用mac的时候其默认文件还会占用一个volume,那么8个正好就用光了,当你创建第二个bucket的时候,你就会发现文件上传不上去,其实配置是没有问题的,只是volume的数量用完了,所以这里建议配置大一些。
3.7 mserver
默认是localhost:9333
3.8 port
端口默认是8080,如果是多volume的话,那肯定是要改的了。
3.9 port.public
对外的端口
3.10 publicUrl
对外的URL地址
3.11 volume.service
如果你执行./weed volume
之后断掉了远程的连接,weed是可以继续保持后台运行的,但是考虑到管理的便捷性,我这里还是做了一个volume.serivce
来进行服务开机启动、启动、重启、停止管理的。
[Unit] Description=Weed Volume Data 1 After=network.target [Service] Type=simple User=seaweedfs Group=seaweedfs PermissionsStartOnly=true ExecStart=/application/seaweedfs/weed -logdir /application/seaweedfs/logs volume -max 100 -index leveldb -port 8011 -dir /application/seaweedfs/volume/data1 -dataCenter bj -rack v4 ExecStop=/bin/kill -s TERM $MAINPID Restart=always LimitNOFILE=1000000 LimitNPROC=1000000 LimitCORE=1000000 [Install] WantedBy=multi-user.target
四、Filer 的使用
可以理解为是一个文件管理器,有了它之后,我们就可以把数据的关系存储到数据库中。
可以通过./weed filer -h
查看一下filer的帮助文档。
root@trojansun:/application/seaweedfs# ./weed filer -h Example: weed filer -port=8888 -master=<ip:port>[,<ip:port>]* Default Usage: -collection string all data will be stored in this collection -dataCenter string prefer to read and write to volumes in this data center -defaultReplicaPlacement string default replication type. If not specified, use master setting. -defaultStoreDir string if filer.toml is empty, use an embedded filer store in the directory (default ".") -dirListLimit int limit sub dir listing size (default 100000) -disableDirListing turn off directory listing -disableHttp disable http request, only gRpc operations are allowed -encryptVolumeData encrypt data on volume servers -ip string filer server http listen ip address (default "192.168.31.198") -ip.bind string ip address to bind to (default "0.0.0.0") -master string comma-separated master servers (default "localhost:9333") -maxMB int split files larger than the limit (default 32) -metricsPort int Prometheus metrics listen port -peers string all filers sharing the same filer store in comma separated ip:port list -port int filer server http listen port (default 8888) -port.readonly int readonly port opened to public -rack string prefer to write to volumes in this rack -s3 whether to start S3 gateway -s3.allowEmptyFolder allow empty folders -s3.cert.file string path to the TLS certificate file -s3.config string path to the config file -s3.domainName string suffix of the host name in comma separated list, {bucket}.{domainName} -s3.key.file string path to the TLS private key file -s3.port int s3 server http listen port (default 8333) -saveToFilerLimit int files smaller than this limit will be saved in filer store -webdav whether to start webdav gateway -webdav.cacheCapacityMB int local cache capacity in MB (default 1000) -webdav.cacheDir string local cache directory for file chunks (default "/tmp") -webdav.cert.file string path to the TLS certificate file -webdav.collection string collection to create the files -webdav.key.file string path to the TLS private key file -webdav.port int webdav server http listen port (default 7333) Description: start a file server which accepts REST operation for any files. //create or overwrite the file, the directories /path/to will be automatically created POST /path/to/file //get the file content GET /path/to/file //create or overwrite the file, the filename in the multipart request will be used POST /path/to/ //return a json format subdirectory and files listing GET /path/to/ The configuration file "filer.toml" is read from ".", "$HOME/.seaweedfs/", "/usr/local/etc/seaweedfs/", or "/etc/seaweedfs/", in that order. If the "filer.toml" is not found, an embedded filer store will be craeted under "-defaultStoreDir". The example filer.toml configuration file can be generated by "weed scaffold -config=filer"
4.1 filer.toml 示例
如果不配置filer.toml,那么系统默认的是使用的leveldb,其数据库的文件会保存在启动filer的同目录下,但是一般我们为了便于管理是不建议这么做的(leveldb大牛除外),所以通常情况下是使用mysql或者postgresql,鉴于项目的特性,我这里使用的是postgresql。
PS:filer可以同时启动s3,但是我有多个s3需要管理,所有我都是单独起s3的。
默认的filer文件可以通过scaffold
获取。
[postgres] # or cockroachdb, YugabyteDB # CREATE TABLE IF NOT EXISTS filemeta ( # dirhash BIGINT, # name VARCHAR(65535), # directory VARCHAR(65535), # meta bytea, # PRIMARY KEY (dirhash, name) # ); enabled = true hostname = "192.168.31.198" port = 5432 username = "seaweedfs" password = "1234qwertQ" database = "seaweedfs" # create or use an existing database schema = "public" sslmode = "disable" connection_max_idle = 100 connection_max_open = 100
4.2 collection
collection可以理解为是一个集合,如果配置了此参数,那么调用此filer的时候都会写入到这个集合。
4.3 dataCenter
数据中心,如果指定了,则调用此filer的时候都会写入到这个数据中心。
4.4 rack
机架,如果指定了,则调用此filer的时候都会写入到这个机架。
4.5 encryptVolumeData
加密数据,如果是机密文件的话,可以加密,我的都是图片,所以这个没有配置。
4.6 master
master 主节点
4.7 peers
所有的filer集合,多个用英文逗号(,)分隔
4.8 filer.service
如果你执行./weed filer
之后断掉了远程的连接,weed是可以继续保持后台运行的,但是考虑到管理的便捷性,我这里还是做了一个filer.serivce
来进行服务开机启动、启动、重启、停止管理的。
[Unit] Description=Weed Filer After=network.target [Service] Type=simple User=seaweedfs Group=seaweedfs PermissionsStartOnly=true ExecStart=/application/seaweedfs/weed -logdir /application/seaweedfs/logs filer ExecStop=/bin/kill -s TERM $MAINPID Restart=always LimitNOFILE=1000000 LimitNPROC=1000000 LimitCORE=1000000 [Install] WantedBy=multi-user.target
五、 s3 的使用
如果要启用类似于s3的使用方式,可以通过./weed s3
来进行单独启用。
我们也可以通过./weed s3 -h
来查看一下s3的帮助文档。
root@trojansun:/application/seaweedfs# ./weed s3 -h Example: weed s3 [-port=8333] [-filer=<ip:port>] [-config=</path/to/config.json>] Default Usage: -allowEmptyFolder allow empty folders -cert.file string path to the TLS certificate file -config string path to the config file -domainName string suffix of the host name in comma separated list, {bucket}.{domainName} -filer string filer server address (default "localhost:8888") -key.file string path to the TLS private key file -metricsPort int Prometheus metrics listen port -port int s3 server http listen port (default 8333) Description: start a s3 API compatible server that is backed by a filer. By default, you can use any access key and secret key to access the S3 APIs. To enable credential based access, create a config.json file similar to this: { "identities": [ { "name": "anonymous", "actions": [ "Read" ] }, { "name": "some_admin_user", "credentials": [ { "accessKey": "some_access_key1", "secretKey": "some_secret_key1" } ], "actions": [ "Admin", "Read", "List", "Tagging", "Write" ] }, { "name": "some_read_only_user", "credentials": [ { "accessKey": "some_access_key2", "secretKey": "some_secret_key2" } ], "actions": [ "Read" ] }, { "name": "some_normal_user", "credentials": [ { "accessKey": "some_access_key3", "secretKey": "some_secret_key3" } ], "actions": [ "Read", "List", "Tagging", "Write" ] }, { "name": "user_limited_to_bucket1", "credentials": [ { "accessKey": "some_access_key4", "secretKey": "some_secret_key4" } ], "actions": [ "Read:bucket1", "List:bucket1", "Tagging:bucket1", "Write:bucket1" ] } ] }
5.1 config
s3的配置文件,主要用来进行鉴权使用。
5.2 domainName
如果绑定了域名,那么访问这个域名的时候,就是{bucket}.{domainName}。
这里有一个部署经验分享,如果后端的bucket不是domainName的前缀,那么可以通过以下方法进行配置(均采用NGINX)。
5.2.1 proxy_set_header方法
使用domainName参数
proxy_set_header Host tjs.trojansun.com;
5.2.2 proxy_pass方法
不使用domainName参数
proxy_pass http://trojansun/tjs;
5.3 cert.file
如果需要配置域名的https,这个是证书cert。
5.4 key.file
如果需要配置域名的https,这个是证书key。
5.5 port
启动s3的端口
5.6 s3.service
[Unit] Description=Weed S3 After=network.target [Service] Type=simple User=seaweedfs Group=seaweedfs PermissionsStartOnly=true ExecStart=/application/seaweedfs/weed -logdir /application/seaweedfs/logs s3 ExecStop=/bin/kill -s TERM $MAINPID Restart=always LimitNOFILE=1000000 LimitNPROC=1000000 LimitCORE=1000000 [Install] WantedBy=multi-user.target
六、scaffold 的使用
当我们在使用seaweedfs的配置文的时候,大多数情况下我们是通过help和wiki了解到的,但是对于配置文件来说,通过help是没有办法获取到的,官方给出了一个方法scaffold。
我们可以通过./weed scaffold -h
看下scaffold的帮助文档。
root@trojansun:/application/seaweedfs# ./weed scaffold -h Example: weed scaffold -config=[filer|notification|replication|security|master] Default Usage: -config string [filer|notification|replication|security|master] the configuration file to generate (default "filer") -output string if not empty, save the configuration file to this directory Description: Generate filer.toml with all possible configurations for you to customize. The options can also be overwritten by environment variables. For example, the filer.toml mysql password can be overwritten by environment variable export WEED_MYSQL_PASSWORD=some_password Environment variable rules: * Prefix the variable name with "WEED_" * Upppercase the reset of variable name. * Replace '.' with '_'
我们可以通过此命令获取到相应的各种配置文件,如果添加-output
,那么可以把文件输出出来,下面主要是为了演示,就不输出,直接打印到控制台了。
6.1 获取Master
6.1.1 操作命令
./weed scaffold --config master
6.1.2 操作结果
root@trojansun:/application/seaweedfs# ./weed scaffold --config master # Put this file to one of the location, with descending priority # ./master.toml # $HOME/.seaweedfs/master.toml # /etc/seaweedfs/master.toml # this file is read by master [master.maintenance] # periodically run these scripts are the same as running them from 'weed shell' scripts = """ lock ec.encode -fullPercent=95 -quietFor=1h ec.rebuild -force ec.balance -force volume.balance -force volume.fix.replication unlock """ sleep_minutes = 17 # sleep minutes between each script execution [master.filer] default = "localhost:8888" # used by maintenance scripts if the scripts needs to use fs related commands [master.sequencer] type = "raft" # Choose [raft|etcd] type for storing the file id sequence # when sequencer.type = etcd, set listen client urls of etcd cluster that store file id sequence # example : http://127.0.0.1:2379,http://127.0.0.1:2389 sequencer_etcd_urls = "http://127.0.0.1:2379" # configurations for tiered cloud storage # old volumes are transparently moved to cloud for cost efficiency [storage.backend] [storage.backend.s3.default] enabled = false aws_access_key_id = "" # if empty, loads from the shared credentials file (~/.aws/credentials). aws_secret_access_key = "" # if empty, loads from the shared credentials file (~/.aws/credentials). region = "us-east-2" bucket = "your_bucket_name" # an existing bucket endpoint = "" # create this number of logical volumes if no more writable volumes # count_x means how many copies of data. # e.g.: # 000 has only one copy, copy_1 # 010 and 001 has two copies, copy_2 # 011 has only 3 copies, copy_3 [master.volume_growth] copy_1 = 7 # create 1 x 7 = 7 actual volumes copy_2 = 6 # create 2 x 6 = 12 actual volumes copy_3 = 3 # create 3 x 3 = 9 actual volumes copy_other = 1 # create n x 1 = n actual volumes # configuration flags for replication [master.replication] # any replication counts should be considered minimums. If you specify 010 and # have 3 different racks, that's still considered writable. Writes will still # try to replicate to all available volumes. You should only use this option # if you are doing your own replication or periodic sync of volumes. treat_replication_as_minimums = false
6.2 获取Filer
6.2.1 操作命令
./weed scaffold --config filer
6.2.2 操作结果
root@trojansun:/application/seaweedfs# ./weed scaffold --config filer # A sample TOML config file for SeaweedFS filer store # Used with "weed filer" or "weed server -filer" # Put this file to one of the location, with descending priority # ./filer.toml # $HOME/.seaweedfs/filer.toml # /etc/seaweedfs/filer.toml #################################################### # Customizable filer server options #################################################### [filer.options] # with http DELETE, by default the filer would check whether a folder is empty. # recursive_delete will delete all sub folders and files, similar to "rm -Rf" recursive_delete = false # directories under this folder will be automatically creating a separate bucket buckets_folder = "/buckets" #################################################### # The following are filer store options #################################################### [leveldb2] # local on disk, mostly for simple single-machine setup, fairly scalable # faster than previous leveldb, recommended. enabled = true dir = "./filerldb2" # directory to store level db files [leveldb3] # similar to leveldb2. # each bucket has its own meta store. enabled = false dir = "./filerldb3" # directory to store level db files [rocksdb] # local on disk, similar to leveldb # since it is using a C wrapper, you need to install rocksdb and build it by yourself enabled = false dir = "./filerrdb" # directory to store rocksdb files [mysql] # or memsql, tidb # CREATE TABLE IF NOT EXISTS filemeta ( # dirhash BIGINT COMMENT 'first 64 bits of MD5 hash value of directory field', # name VARCHAR(1000) COMMENT 'directory or file name', # directory TEXT COMMENT 'full path to parent directory', # meta LONGBLOB, # PRIMARY KEY (dirhash, name) # ) DEFAULT CHARSET=utf8; enabled = false hostname = "localhost" port = 3306 username = "root" password = "" database = "" # create or use an existing database connection_max_idle = 2 connection_max_open = 100 connection_max_lifetime_seconds = 0 interpolateParams = false [mysql2] # or memsql, tidb enabled = false createTable = """ CREATE TABLE IF NOT EXISTS %s ( dirhash BIGINT, name VARCHAR(1000), directory TEXT, meta LONGBLOB, PRIMARY KEY (dirhash, name) ) DEFAULT CHARSET=utf8; """ hostname = "localhost" port = 3306 username = "root" password = "" database = "" # create or use an existing database connection_max_idle = 2 connection_max_open = 100 connection_max_lifetime_seconds = 0 interpolateParams = false [postgres] # or cockroachdb, YugabyteDB # CREATE TABLE IF NOT EXISTS filemeta ( # dirhash BIGINT, # name VARCHAR(65535), # directory VARCHAR(65535), # meta bytea, # PRIMARY KEY (dirhash, name) # ); enabled = false hostname = "localhost" port = 5432 username = "postgres" password = "" database = "postgres" # create or use an existing database schema = "" sslmode = "disable" connection_max_idle = 100 connection_max_open = 100 [postgres2] enabled = false createTable = """ CREATE TABLE IF NOT EXISTS %s ( dirhash BIGINT, name VARCHAR(65535), directory VARCHAR(65535), meta bytea, PRIMARY KEY (dirhash, name) ); """ hostname = "localhost" port = 5432 username = "postgres" password = "" database = "postgres" # create or use an existing database schema = "" sslmode = "disable" connection_max_idle = 100 connection_max_open = 100 [cassandra] # CREATE TABLE filemeta ( # directory varchar, # name varchar, # meta blob, # PRIMARY KEY (directory, name) # ) WITH CLUSTERING ORDER BY (name ASC); enabled = false keyspace="seaweedfs" hosts=[ "localhost:9042", ] username="" password="" # This changes the data layout. Only add new directories. Removing/Updating will cause data loss. superLargeDirectories = [] [hbase] enabled = false zkquorum = "" table = "seaweedfs" [redis2] enabled = false address = "localhost:6379" password = "" database = 0 # This changes the data layout. Only add new directories. Removing/Updating will cause data loss. superLargeDirectories = [] [redis_cluster2] enabled = false addresses = [ "localhost:30001", "localhost:30002", "localhost:30003", "localhost:30004", "localhost:30005", "localhost:30006", ] password = "" # allows reads from slave servers or the master, but all writes still go to the master readOnly = false # automatically use the closest Redis server for reads routeByLatency = false # This changes the data layout. Only add new directories. Removing/Updating will cause data loss. superLargeDirectories = [] [etcd] enabled = false servers = "localhost:2379" timeout = "3s" [mongodb] enabled = false uri = "mongodb://localhost:27017" option_pool_size = 0 database = "seaweedfs" [elastic7] enabled = false servers = [ "http://localhost1:9200", "http://localhost2:9200", "http://localhost3:9200", ] username = "" password = "" sniff_enabled = false healthcheck_enabled = false # increase the value is recommend, be sure the value in Elastic is greater or equal here index.max_result_window = 10000 ########################## ########################## # To add path-specific filer store: # # 1. Add a name following the store type separated by a dot ".". E.g., cassandra.tmp # 2. Add a location configuraiton. E.g., location = "/tmp/" # 3. Copy and customize all other configurations. # Make sure they are not the same if using the same store type! # 4. Set enabled to true # # The following is just using cassandra as an example ########################## [redis2.tmp] enabled = false location = "/tmp/" address = "localhost:6379" password = "" database = 1
6.3 获取Security
6.3.1 操作命令
./weed scaffold --config security
6.3.2 操作结果
root@trojansun:/application/seaweedfs# ./weed scaffold --config security # Put this file to one of the location, with descending priority # ./security.toml # $HOME/.seaweedfs/security.toml # /etc/seaweedfs/security.toml # this file is read by master, volume server, and filer # the jwt signing key is read by master and volume server. # a jwt defaults to expire after 10 seconds. [jwt.signing] key = "" expires_after_seconds = 10 # seconds # jwt for read is only supported with master+volume setup. Filer does not support this mode. [jwt.signing.read] key = "" expires_after_seconds = 10 # seconds # all grpc tls authentications are mutual # the values for the following ca, cert, and key are paths to the PERM files. # the host name is not checked, so the PERM files can be shared. [grpc] ca = "" [grpc.volume] cert = "" key = "" [grpc.master] cert = "" key = "" [grpc.filer] cert = "" key = "" [grpc.msg_broker] cert = "" key = "" # use this for any place needs a grpc client # i.e., "weed backup|benchmark|filer.copy|filer.replicate|mount|s3|upload" [grpc.client] cert = "" key = "" # volume server https options # Note: work in progress! # this does not work with other clients, e.g., "weed filer|mount" etc, yet. [https.client] enabled = true [https.volume] cert = "" key = ""
rocksdb怎么使用的? 配置完filer无法启动