Last active
December 21, 2015 02:28
-
-
Save leifcr/6234817 to your computer and use it in GitHub Desktop.
Riak example cluster configuration with 3 nodes (riak1, riak2 and riak3)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.10", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.10", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.10", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Riak CS paths | |
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-1.4.0/ebin"]}, | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% Riak CS Configuration... | |
{multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]}, | |
{multi_backend_default, be_default}, | |
{multi_backend, [ | |
{be_default, riak_kv_eleveldb_backend, [ | |
{max_open_files, 50}, | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
{be_blocks, riak_kv_bitcask_backend, [ | |
{data_root, "/var/lib/riak/bitcask"} | |
]} | |
]}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. | |
/etc/riak❯❯❯ ls | |
app.config cert.pem key.pem vm.args | |
/etc/riak❯❯❯ cat app.config | |
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.10", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.10", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.10", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. | |
/etc/riak❯❯❯ mcedit app.config | |
/etc/riak❯❯❯ mcedit app.config | |
/etc/riak❯❯❯ cat app.config | |
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.10", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default bucket settings | |
{default_bucket_props, [ | |
{n_val,2} %% Use only a replica of 2 for this test on 3 nodes | |
]}, | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.10", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.10", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Name of the riak node | |
-name [email protected] | |
## Cookie for distributed erlang. All nodes in the same cluster | |
## should use the same cookie or they will not be able to communicate. | |
-setcookie riak | |
## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive | |
## (Disabled by default..use with caution!) | |
##-heart | |
## Enable kernel poll and a few async threads | |
+K true | |
+A 64 | |
## Treat error_logger warnings as warnings | |
+W w | |
## Increase number of concurrent ports/sockets | |
-env ERL_MAX_PORTS 64000 | |
## Tweak GC to run more often | |
-env ERL_FULLSWEEP_AFTER 0 | |
## Set the location of crash dumps | |
-env ERL_CRASH_DUMP /var/log/riak/erl_crash.dump | |
## Raise the ETS table limit | |
-env ERL_MAX_ETS_TABLES 256000 | |
## Force the erlang VM to use SMP | |
-smp enable | |
## For nodes with many busy_dist_port events, Basho recommends | |
## raising the sender-side network distribution buffer size. | |
## 32MB may not be sufficient for some workloads and is a suggested | |
## starting point. | |
## The Erlang/OTP default is 1024 (1 megabyte). | |
## See: http://www.erlang.org/doc/man/erl.html#%2bzdbbl | |
##+zdbbl 32768 | |
## Raise the default erlang process limit | |
+P 256000 | |
## Erlang VM scheduler tuning. | |
## Prerequisite: a patched VM from Basho, or a VM compiled separately | |
## with this patch applied: | |
## https://gist.github.com/evanmcc/a599f4c6374338ed672e | |
##+sfwi 500 | |
## Begin SSL distribution items, DO NOT DELETE OR EDIT THIS COMMENT | |
## To enable SSL encryption of the Erlang intra-cluster communication, | |
## un-comment the three lines below and make certain that the paths | |
## point to correct PEM data files. See docs TODO for details. | |
## -proto_dist inet_ssl | |
## -ssl_dist_opt client_certfile "/etc/riak/erlclient.pem" | |
## -ssl_dist_opt server_certfile "/etc/riak/erlserver.pem" | |
## End SSL distribution items, DO NOT DELETE OR EDIT THIS COMMENT |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.11", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.11", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.11", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Riak CS paths | |
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-1.4.0/ebin"]}, | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% Riak CS Configuration... | |
{multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]}, | |
{multi_backend_default, be_default}, | |
{multi_backend, [ | |
{be_default, riak_kv_eleveldb_backend, [ | |
{max_open_files, 50}, | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
{be_blocks, riak_kv_bitcask_backend, [ | |
{data_root, "/var/lib/riak/bitcask"} | |
]} | |
]}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. | |
/etc/riak❯❯❯ ls | |
app.config cert.pem key.pem vm.args | |
/etc/riak❯❯❯ cat app.config | |
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.11", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.11", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.11", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. | |
/etc/riak❯❯❯ mcedit app.config | |
/etc/riak❯❯❯ mcedit app.config | |
/etc/riak❯❯❯ cat app.config | |
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.11", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default bucket settings | |
{default_bucket_props, [ | |
{n_val,2} %% Use only a replica of 2 for this test on 3 nodes | |
]}, | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.11", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.11", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Name of the riak node | |
-name [email protected] | |
## Cookie for distributed erlang. All nodes in the same cluster | |
## should use the same cookie or they will not be able to communicate. | |
-setcookie riak | |
## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive | |
## (Disabled by default..use with caution!) | |
##-heart | |
## Enable kernel poll and a few async threads | |
+K true | |
+A 64 | |
## Treat error_logger warnings as warnings | |
+W w | |
## Increase number of concurrent ports/sockets | |
-env ERL_MAX_PORTS 64000 | |
## Tweak GC to run more often | |
-env ERL_FULLSWEEP_AFTER 0 | |
## Set the location of crash dumps | |
-env ERL_CRASH_DUMP /var/log/riak/erl_crash.dump | |
## Raise the ETS table limit | |
-env ERL_MAX_ETS_TABLES 256000 | |
## Force the erlang VM to use SMP | |
-smp enable | |
## For nodes with many busy_dist_port events, Basho recommends | |
## raising the sender-side network distribution buffer size. | |
## 32MB may not be sufficient for some workloads and is a suggested | |
## starting point. | |
## The Erlang/OTP default is 1024 (1 megabyte). | |
## See: http://www.erlang.org/doc/man/erl.html#%2bzdbbl | |
##+zdbbl 32768 | |
## Raise the default erlang process limit | |
+P 256000 | |
## Erlang VM scheduler tuning. | |
## Prerequisite: a patched VM from Basho, or a VM compiled separately | |
## with this patch applied: | |
## https://gist.github.com/evanmcc/a599f4c6374338ed672e | |
##+sfwi 500 | |
## Begin SSL distribution items, DO NOT DELETE OR EDIT THIS COMMENT | |
## To enable SSL encryption of the Erlang intra-cluster communication, | |
## un-comment the three lines below and make certain that the paths | |
## point to correct PEM data files. See docs TODO for details. | |
## -proto_dist inet_ssl | |
## -ssl_dist_opt client_certfile "/etc/riak/erlclient.pem" | |
## -ssl_dist_opt server_certfile "/etc/riak/erlserver.pem" | |
## End SSL distribution items, DO NOT DELETE OR EDIT THIS COMMENT |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.1", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.1", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.1", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Riak CS paths | |
{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-1.4.0/ebin"]}, | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% Riak CS Configuration... | |
{multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]}, | |
{multi_backend_default, be_default}, | |
{multi_backend, [ | |
{be_default, riak_kv_eleveldb_backend, [ | |
{max_open_files, 50}, | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
{be_blocks, riak_kv_bitcask_backend, [ | |
{data_root, "/var/lib/riak/bitcask"} | |
]} | |
]}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. | |
/etc/riak❯❯❯ ls | |
app.config cert.pem key.pem vm.args | |
/etc/riak❯❯❯ cat app.config | |
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.1", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.1", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.1", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. | |
/etc/riak❯❯❯ mcedit app.config | |
/etc/riak❯❯❯ mcedit app.config | |
/etc/riak❯❯❯ cat app.config | |
%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*- | |
%% ex: ft=erlang ts=4 sw=4 et | |
[ | |
%% Riak Client APIs config | |
{riak_api, [ | |
%% pb_backlog is the maximum length to which the queue of pending | |
%% connections may grow. If set, it must be an integer >= 0. | |
%% By default the value is 5. If you anticipate a huge number of | |
%% connections being initialised *simultaneously*, set this number | |
%% higher. | |
%% {pb_backlog, 64}, | |
%% pb is a list of IP addresses and TCP ports that the Riak | |
%% Protocol Buffers interface will bind. | |
{pb, [ {"10.100.20.1", 8087 } ]} | |
]}, | |
%% Riak Core config | |
{riak_core, [ | |
%% Default bucket settings | |
{default_bucket_props, [ | |
{n_val,2} %% Use only a replica of 2 for this test on 3 nodes | |
]}, | |
%% Default location of ringstate | |
{ring_state_dir, "/var/lib/riak/ring"}, | |
%% Default ring creation size. Make sure it is a power of 2, | |
%% e.g. 16, 32, 64, 128, 256, 512 etc | |
%{ring_creation_size, 64}, | |
%% http is a list of IP addresses and TCP ports that the Riak | |
%% HTTP interface will bind. | |
{http, [ {"10.100.20.1", 8098 } ]}, | |
%% https is a list of IP addresses and TCP ports that the Riak | |
%% HTTPS interface will bind. | |
%{https, [{ "10.100.20.1", 8098 }]}, | |
%% Default cert and key locations for https can be overridden | |
%% with the ssl config variable, for example: | |
%{ssl, [ | |
% {certfile, "/etc/riak/cert.pem"}, | |
% {keyfile, "/etc/riak/key.pem"} | |
% ]}, | |
%% riak_handoff_port is the TCP port that Riak uses for | |
%% intra-cluster data handoff. | |
{handoff_port, 8099 }, | |
%% To encrypt riak_core intra-cluster data handoff traffic, | |
%% uncomment the following line and edit its path to an | |
%% appropriate certfile and keyfile. (This example uses a | |
%% single file with both items concatenated together.) | |
%{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]}, | |
%% DTrace support | |
%% Do not enable 'dtrace_support' unless your Erlang/OTP | |
%% runtime is compiled to support DTrace. DTrace is | |
%% available in R15B01 (supported by the Erlang/OTP | |
%% official source package) and in R14B04 via a custom | |
%% source repository & branch. | |
{dtrace_support, false}, | |
%% Health Checks | |
%% If disabled, health checks registered by an application will | |
%% be ignored. NOTE: this option cannot be changed at runtime. | |
%% To re-enable, the setting must be changed and the node restarted. | |
%% NOTE: As of Riak 1.3.2, health checks are deprecated as they | |
%% may interfere with the new overload protection mechanisms. | |
%% If there is a good reason to re-enable them, you must uncomment | |
%% this line and also add an entry in the riak_kv section: | |
%% {riak_kv, [ ..., {enable_health_checks, true}, ...]} | |
%% {enable_health_checks, true}, | |
%% Platform-specific installation paths (substituted by rebar) | |
{platform_bin_dir, "/usr/sbin"}, | |
{platform_data_dir, "/var/lib/riak"}, | |
{platform_etc_dir, "/etc/riak"}, | |
{platform_lib_dir, "/usr/lib/riak/lib"}, | |
{platform_log_dir, "/var/log/riak"} | |
]}, | |
%% Riak KV config | |
{riak_kv, [ | |
%% Storage_backend specifies the Erlang module defining the storage | |
%% mechanism that will be used on this node. | |
{storage_backend, riak_kv_bitcask_backend}, | |
%% raw_name is the first part of all URLS used by the Riak raw HTTP | |
%% interface. See riak_web.erl and raw_http_resource.erl for | |
%% details. | |
%{raw_name, "riak"}, | |
%% Enable active anti-entropy subsystem + optional debug messages: | |
%% {anti_entropy, {on|off, []}}, | |
%% {anti_entropy, {on|off, [debug]}}, | |
{anti_entropy, {on, []}}, | |
%% Restrict how fast AAE can build hash trees. Building the tree | |
%% for a given partition requires a full scan over that partition's | |
%% data. Once built, trees stay built until they are expired. | |
%% Config is of the form: | |
%% {num-builds, per-timespan-in-milliseconds} | |
%% Default is 1 build per hour. | |
{anti_entropy_build_limit, {1, 3600000}}, | |
%% Determine how often hash trees are expired after being built. | |
%% Periodically expiring a hash tree ensures the on-disk hash tree | |
%% data stays consistent with the actual k/v backend data. It also | |
%% helps Riak identify silent disk failures and bit rot. However, | |
%% expiration is not needed for normal AAE operation and should be | |
%% infrequent for performance reasons. The time is specified in | |
%% milliseconds. The default is 1 week. | |
{anti_entropy_expire, 604800000}, | |
%% Limit how many AAE exchanges/builds can happen concurrently. | |
{anti_entropy_concurrency, 2}, | |
%% The tick determines how often the AAE manager looks for work | |
%% to do (building/expiring trees, triggering exchanges, etc). | |
%% The default is every 15 seconds. Lowering this value will | |
%% speedup the rate that all replicas are synced across the cluster. | |
%% Increasing the value is not recommended. | |
{anti_entropy_tick, 15000}, | |
%% The directory where AAE hash trees are stored. | |
{anti_entropy_data_dir, "/var/lib/riak/anti_entropy"}, | |
%% The LevelDB options used by AAE to generate the LevelDB-backed | |
%% on-disk hashtrees. | |
{anti_entropy_leveldb_opts, [{write_buffer_size, 4194304}, | |
{max_open_files, 20}]}, | |
%% mapred_name is URL used to submit map/reduce requests to Riak. | |
{mapred_name, "mapred"}, | |
%% mapred_2i_pipe indicates whether secondary-index | |
%% MapReduce inputs are queued in parallel via their own | |
%% pipe ('true'), or serially via a helper process | |
%% ('false' or undefined). Set to 'false' or leave | |
%% undefined during a rolling upgrade from 1.0. | |
{mapred_2i_pipe, true}, | |
%% Each of the following entries control how many Javascript | |
%% virtual machines are available for executing map, reduce, | |
%% pre- and post-commit hook functions. | |
{map_js_vm_count, 8 }, | |
{reduce_js_vm_count, 6 }, | |
{hook_js_vm_count, 2 }, | |
%% js_max_vm_mem is the maximum amount of memory, in megabytes, | |
%% allocated to the Javascript VMs. If unset, the default is | |
%% 8MB. | |
{js_max_vm_mem, 8}, | |
%% js_thread_stack is the maximum amount of thread stack, in megabyes, | |
%% allocate to the Javascript VMs. If unset, the default is 16MB. | |
%% NOTE: This is not the same as the C thread stack. | |
{js_thread_stack, 16}, | |
%% js_source_dir should point to a directory containing Javascript | |
%% source files which will be loaded by Riak when it initializes | |
%% Javascript VMs. | |
%{js_source_dir, "/tmp/js_source"}, | |
%% http_url_encoding determines how Riak treats URL encoded | |
%% buckets, keys, and links over the REST API. When set to 'on' | |
%% Riak always decodes encoded values sent as URLs and Headers. | |
%% Otherwise, Riak defaults to compatibility mode where links | |
%% are decoded, but buckets and keys are not. The compatibility | |
%% mode will be removed in a future release. | |
{http_url_encoding, on}, | |
%% Switch to vnode-based vclocks rather than client ids. This | |
%% significantly reduces the number of vclock entries. | |
%% Only set true if *all* nodes in the cluster are upgraded to 1.0 | |
{vnode_vclocks, true}, | |
%% This option toggles compatibility of keylisting with 1.0 | |
%% and earlier versions. Once a rolling upgrade to a version | |
%% > 1.0 is completed for a cluster, this should be set to | |
%% true for better control of memory usage during key listing | |
%% operations | |
{listkeys_backpressure, true}, | |
%% This option specifies how many of each type of fsm may exist | |
%% concurrently. This is for overload protection and is a new | |
%% mechanism that obsoletes 1.3's health checks. Note that this number | |
%% represents two potential processes, so +P in vm.args should be at | |
%% least 3X the fsm_limit. | |
{fsm_limit, 50000}, | |
%% object_format controls which binary representation of a riak_object | |
%% is stored on disk. | |
%% Current options are: v0, v1. | |
%% v0: Original erlang:term_to_binary format. Higher space overhead. | |
%% v1: New format for more compact storage of small values. | |
{object_format, v1} | |
]}, | |
%% Riak Search Config | |
{riak_search, [ | |
%% To enable Search functionality set this 'true'. | |
{enabled, false} | |
]}, | |
%% Merge Index Config | |
{merge_index, [ | |
%% The root dir to store search merge_index data | |
{data_root, "/var/lib/riak/merge_index"}, | |
%% Size, in bytes, of the in-memory buffer. When this | |
%% threshold has been reached the data is transformed | |
%% into a segment file which resides on disk. | |
{buffer_rollover_size, 1048576}, | |
%% Overtime the segment files need to be compacted. | |
%% This is the maximum number of segments that will be | |
%% compacted at once. A lower value will lead to | |
%% quicker but more frequent compactions. | |
{max_compact_segments, 20} | |
]}, | |
%% Bitcask Config | |
{bitcask, [ | |
%% Configure how Bitcask writes data to disk. | |
%% erlang: Erlang's built-in file API | |
%% nif: Direct calls to the POSIX C API | |
%% | |
%% The NIF mode provides higher throughput for certain | |
%% workloads, but has the potential to negatively impact | |
%% the Erlang VM, leading to higher worst-case latencies | |
%% and possible throughput collapse. | |
{io_mode, erlang}, | |
{max_file_size, 268435456}, | |
%% Trigger a merge if any of the following are true: | |
{frag_merge_trigger, 35}, %% fragmentation >= 35% | |
{dead_bytes_merge_trigger, 134217728}, %% dead bytes > 128 MB | |
%% Conditions that determine if a file will be examined during a merge: | |
{frag_threshold, 20}, %% fragmentation >= 20% | |
{dead_bytes_threshold, 33554432}, %% dead bytes > 32 MB | |
{small_file_threshold, 10485760}, %% file is < 10MB | |
{data_root, "/var/lib/riak/bitcask"} | |
]}, | |
%% eLevelDB Config | |
{eleveldb, [ | |
{data_root, "/var/lib/riak/leveldb"} | |
]}, | |
%% Lager Config | |
{lager, [ | |
%% What handlers to install with what arguments | |
%% The defaults for the logfiles are to rotate the files when | |
%% they reach 10Mb or at midnight, whichever comes first, and keep | |
%% the last 5 rotations. See the lager README for a description of | |
%% the time rotation format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
%% | |
%% If you wish to disable rotation, you can either set the size to 0 | |
%% and the rotation time to "", or instead specify a 2-tuple that only | |
%% consists of {Logfile, Level}. | |
%% | |
%% If you wish to have riak log messages to syslog, you can use a handler | |
%% like this: | |
%% {lager_syslog_backend, ["riak", daemon, info]}, | |
%% | |
{handlers, [ | |
{lager_file_backend, [ | |
{"/var/log/riak/error.log", error, 10485760, "$D0", 5}, | |
{"/var/log/riak/console.log", info, 10485760, "$D0", 5} | |
]} | |
] }, | |
%% Whether to write a crash log, and where. | |
%% Commented/omitted/undefined means no crash logger. | |
{crash_log, "/var/log/riak/crash.log"}, | |
%% Maximum size in bytes of events in the crash log - defaults to 65536 | |
{crash_log_msg_size, 65536}, | |
%% Maximum size of the crash log in bytes, before its rotated, set | |
%% to 0 to disable rotation - default is 0 | |
{crash_log_size, 10485760}, | |
%% What time to rotate the crash log - default is no time | |
%% rotation. See the lager README for a description of this format: | |
%% https://github.com/basho/lager/blob/master/README.org | |
{crash_log_date, "$D0"}, | |
%% Number of rotated crash logs to keep, 0 means keep only the | |
%% current one - default is 0 | |
{crash_log_count, 5}, | |
%% Whether to redirect error_logger messages into lager - defaults to true | |
{error_logger_redirect, true}, | |
%% maximum number of error_logger messages to handle in a second | |
%% lager 2.0.0 shipped with a limit of 50, which is a little low for riak's startup | |
{error_logger_hwm, 100} | |
]}, | |
%% riak_sysmon config | |
{riak_sysmon, [ | |
%% To disable forwarding events of a particular type, use a | |
%% limit of 0. | |
{process_limit, 30}, | |
{port_limit, 2}, | |
%% Finding reasonable limits for a given workload is a matter | |
%% of experimentation. | |
%% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero) | |
%% can cause performance problems on multi-CPU systems. | |
{gc_ms_limit, 0}, | |
{heap_word_limit, 40111000}, | |
%% Configure the following items to 'false' to disable logging | |
%% of that event type. | |
{busy_port, true}, | |
{busy_dist_port, true} | |
]}, | |
%% SASL config | |
{sasl, [ | |
{sasl_error_logger, false} | |
]}, | |
%% riak_control config | |
{riak_control, [ | |
%% Set to false to disable the admin panel. | |
{enabled, false}, | |
%% Authentication style used for access to the admin | |
%% panel. Valid styles are 'userlist' <TODO>. | |
{auth, userlist}, | |
%% If auth is set to 'userlist' then this is the | |
%% list of usernames and passwords for access to the | |
%% admin panel. | |
{userlist, [{"user", "pass"} | |
]}, | |
%% The admin panel is broken up into multiple | |
%% components, each of which is enabled or disabled | |
%% by one of these settings. | |
{admin, true} | |
]} | |
]. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Name of the riak node | |
-name [email protected] | |
## Cookie for distributed erlang. All nodes in the same cluster | |
## should use the same cookie or they will not be able to communicate. | |
-setcookie riak | |
## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive | |
## (Disabled by default..use with caution!) | |
##-heart | |
## Enable kernel poll and a few async threads | |
+K true | |
+A 64 | |
## Treat error_logger warnings as warnings | |
+W w | |
## Increase number of concurrent ports/sockets | |
-env ERL_MAX_PORTS 64000 | |
## Tweak GC to run more often | |
-env ERL_FULLSWEEP_AFTER 0 | |
## Set the location of crash dumps | |
-env ERL_CRASH_DUMP /var/log/riak/erl_crash.dump | |
## Raise the ETS table limit | |
-env ERL_MAX_ETS_TABLES 256000 | |
## Force the erlang VM to use SMP | |
-smp enable | |
## For nodes with many busy_dist_port events, Basho recommends | |
## raising the sender-side network distribution buffer size. | |
## 32MB may not be sufficient for some workloads and is a suggested | |
## starting point. | |
## The Erlang/OTP default is 1024 (1 megabyte). | |
## See: http://www.erlang.org/doc/man/erl.html#%2bzdbbl | |
##+zdbbl 32768 | |
## Raise the default erlang process limit | |
+P 256000 | |
## Erlang VM scheduler tuning. | |
## Prerequisite: a patched VM from Basho, or a VM compiled separately | |
## with this patch applied: | |
## https://gist.github.com/evanmcc/a599f4c6374338ed672e | |
##+sfwi 500 | |
## Begin SSL distribution items, DO NOT DELETE OR EDIT THIS COMMENT | |
## To enable SSL encryption of the Erlang intra-cluster communication, | |
## un-comment the three lines below and make certain that the paths | |
## point to correct PEM data files. See docs TODO for details. | |
## -proto_dist inet_ssl | |
## -ssl_dist_opt client_certfile "/etc/riak/erlclient.pem" | |
## -ssl_dist_opt server_certfile "/etc/riak/erlserver.pem" | |
## End SSL distribution items, DO NOT DELETE OR EDIT THIS COMMENT |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment