A combination of [`IntegerPartitions`](https://reference.wolfram.com/language/ref/IntegerPartitions.html), [`RandomChoice`](https://reference.wolfram.com/language/ref/RandomChoice.html)and [`RandomSample`](https://reference.wolfram.com/language/ref/RandomSample.html):

    n = 30;
    RandomSample @ RandomChoice @ IntegerPartitions[0, {n}, {-1, 0, 1}]
>{-1, 1, 1, 1, 1, -1, -1, 0, -1, 1, 1, -1, -1, -1, 1, -1, 1, 1, -1, 0, 
1, -1, -1, 1, -1, -1, 1, 1, -1, 1}

    Total @ %
> 0

You can also do

    RandomSample @
     PadRight[Flatten @ ConstantArray[{1, -1}, RandomChoice[Range[0, Floor[n/2]]]], n]
> {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, -1, -1, -1,
0, 0, -1, 0, 0, 0, 0, 1, 0}

    Total @ %
> 0

For large `n`, the second approach is much faster than the first.