# Yig **Repository Path**: mirrors/Yig ## Basic Information - **Project Name**: Yig - **Description**: Yet another Index Gateway Yig 是 S3 协议兼容的分布式对象存储系统 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.oschina.net/p/yig - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2018-05-23 - **Last Updated**: 2025-09-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # YIG [![Build Status](https://travis-ci.org/journeymidnight/yig.svg?branch=master)](https://travis-ci.org/journeymidnight/yig) [![license](https://img.shields.io/github/license/journeymidnight/yig.svg)](https://github.com/journeymidnight/yig/blob/master/LICENSE) *Y*et *a*nother *I*ndex *G*ateway YIG is a SODA Foundation project # Introduction ## A completely new designed object storage gateway framework that fully compatible with Amazon S3 At its core, Yig extend minio backend storage to allow more than one ceph cluster work together and form a super large storage resource pool, users could easily enlarge the pool`s capacity to EB level by adding a new ceph cluser to this pool. Benifits are avoiding data movement and IO drop down caused by adding new host or disks to old ceph cluster as usual way. To accomplish this goal, Yig need a distribute database to store meta infomation. Now already Support Tidb,MySql. ![arch](https://github.com/journeymidnight/yig/raw/master/doc/images/yig.jpg) # Getting Started ## Build How to build? Require: - ceph-devel - go(>=1.7) Steps: ```shell mkdir -p $GOPATH/src/github.com/journeymidnight cd $GOPATH/src/github.com/journeymidnight git clone git@github.com:yig/yig.git cd $YIG_DIR go get ./... go build ``` build rpm package ```shell yum install ceph-devel sh package/rpmbuild.sh ``` ## Dependency Before running Yig, requirments below are needed: * Deploy at least a ceph cluster with two specify pools named 'tiger' and 'rabbit' are created. About how to deploy ceph, please refer [https://ceph.com](https://ceph.com) or our [[Sample]](https://github.com/journeymidnight/yig/wiki/Minimal-Ceph-Deployment) * Deploy a TiDB/Mysql, then create tables. [[Sample]](https://github.com/journeymidnight/yig/blob/master/doc/deploy.md) * Tidb/Mysql: ``` MariaDB [(none)]> create database yig MariaDB [(none)]> source ../yig/integrate/yig.sql ``` * Deploy [yig-iam](https://github.com/journeymidnight/yig-iam) used for user management and authorize request. If Yig is running in Debug Mode, request will not sent to yig-iam. So this deployment is optional, but in real factory environment, you still need it. * Deploy a standalone Redis instance used as cache for better performance. This deployment is optional but strong recommend ``` yum install redis ``` ## Config files Main config file of Yig is located at ```/etc/yig/yig.toml ``` by default ``` s3domain = ["s3.test.com","s3-internal.test.com"] region = "cn-bj-1" log_path = "/var/log/yig/yig.log" access_log_path = "/var/log/yig/access.log" access_log_format = "{combined}" panic_log_path = "/var/log/yig/panic.log" log_level = 20 pid_file = "/var/run/yig/yig.pid" api_listener = "0.0.0.0:8080" admin_listener = "0.0.0.0:9000" admin_key = "secret" ssl_key_path = "" ssl_cert_path = "" # DebugMode lcdebug = true debug_mode = true reserved_origins = "s3.test.com,s3-internal.test.com" # Meta Config meta_cache_type = 2 meta_store = "tidb" tidb_info = "root:@tcp(10.5.0.17:4000)/yig" keepalive = true zk_address = "hbase:2181" redis_address = "redis:6379" redis_password = "hehehehe" redis_connection_number = 10 memory_cache_max_entry_count = 100000 enable_data_cache = true redis_connect_timeout = 1 redis_read_timeout = 1 redis_write_timeout = 1 redis_keepalive = 60 redis_pool_max_idle = 3 redis_pool_idle_timeout = 30 cache_circuit_check_interval = 3 cache_circuit_close_sleep_window = 1 cache_circuit_close_required_count = 3 cache_circuit_open_threshold = 1 # Ceph Config ceph_config_pattern = "/etc/ceph/*.conf" ``` ### Meanings of options above: ``` S3Domain: your s3 service domain Region: doesn`t matter IamEndpoint: address of iam service IamKey: specify as your wish, but must be the same as iam config files IamSecret: specify as your wish, but must be the same as iam config files LogPath: location of yig access log file PanicLogPath: location of yig panic log file BindApiAddress: your s3 service endpoint BindAdminAddress: end point for tools/admin SSLKeyPath: SSL key location SSLCertPath: SSL Cert location ZookeeperAddress: zookeeper address if you choose hbase RedisAddress: Redis access address DebugMode: if this is set true, only requestes signed by [AK/SK:hehehehe/hehehehe] are valid AdminKey: used for tools/admin MetaCacheType: EnableDataCache: CephConfigPattern: ceph config files for yig GcThread: control gc speed when tools/lc is running LogLevel: [1-20] the bigger number is, the more log output to log file ReservedOrigins: set CORS when s3 request are from web browser TidbInfo: ``` Ceph config files Combine your ceph cluster config file [/etc/ceph/ceph.conf] with [/etc/ceph/ceph.client.admin.keyring] together, then put it to the location which 'CephConfigPattern' specified, a sample is below ``` [global] fsid = 7b3c9d3a-65f3-4024-aaf1-a29b9422665c mon_initial_members = ceph57 mon_host = 10.180.92.57 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx filestore_xattr_use_omap = true osd pool default size = 3 osd pool default min size = 2 osd pool default pg num = 128 osd pool default pgp num = 128 [client.admin] key = AQCulvxWKAl/MRAA0weYOmmkArUm/CGBHX0eSA== ``` ## Run Start server: ```shell cd $YIG_DIR sudo ./yig ``` OR ``` systemctl start yig ``` ## Documentation + [why develop yig](https://github.com/journeymidnight/yig/blob/master/doc/yig.md) Please refer our wiki for other information ## License [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fjourneymidnight%2Fyig.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fjourneymidnight%2Fyig?ref=badge_large) ## Feedback & Contact - Github Issues:You are sincerely welcomed to issue any bugs you came across or any suggestions through Github. If you have any questions you can create issues or scan QR code below with wechat for more details. - User group:We use Wechat group currently.